/******************************************************************************* * PSHDL is a library and (trans-)compiler for PSHDL input. It generates * output suitable for implementation or simulation of it. * * Copyright (C) 2013 Karsten Becker (feedback (at) pshdl (dot) org) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. * * This License does not grant permission to use the trade names, trademarks, * service marks, or product names of the Licensor, except as required for * reasonable and customary use in describing the origin of the Work. * * Contributors: * Karsten Becker - initial API and implementation ******************************************************************************/ // Generated from PSHDLLang.g4 by ANTLR 4.2.2 package org.pshdl.model.parser; import java.util.ArrayList; import java.util.List; import org.antlr.v4.runtime.FailedPredicateException; import org.antlr.v4.runtime.NoViableAltException; import org.antlr.v4.runtime.Parser; import org.antlr.v4.runtime.ParserRuleContext; import org.antlr.v4.runtime.RecognitionException; import org.antlr.v4.runtime.RuleContext; import org.antlr.v4.runtime.Token; import org.antlr.v4.runtime.TokenStream; import org.antlr.v4.runtime.atn.ATN; import org.antlr.v4.runtime.atn.ATNDeserializer; import org.antlr.v4.runtime.atn.ParserATNSimulator; import org.antlr.v4.runtime.atn.PredictionContextCache; import org.antlr.v4.runtime.dfa.DFA; import org.antlr.v4.runtime.tree.ParseTreeListener; import org.antlr.v4.runtime.tree.TerminalNode; @SuppressWarnings({ "all", "warnings", "unchecked", "unused", "cast" }) public class PSHDLLangParser extends Parser { protected static final DFA[] _decisionToDFA; protected static final PredictionContextCache _sharedContextCache = new PredictionContextCache(); public static final int T__42 = 1, T__41 = 2, T__40 = 3, T__39 = 4, T__38 = 5, T__37 = 6, T__36 = 7, T__35 = 8, T__34 = 9, T__33 = 10, T__32 = 11, T__31 = 12, T__30 = 13, T__29 = 14, T__28 = 15, T__27 = 16, T__26 = 17, T__25 = 18, T__24 = 19, T__23 = 20, T__22 = 21, T__21 = 22, T__20 = 23, T__19 = 24, T__18 = 25, T__17 = 26, T__16 = 27, T__15 = 28, T__14 = 29, T__13 = 30, T__12 = 31, T__11 = 32, T__10 = 33, T__9 = 34, T__8 = 35, T__7 = 36, T__6 = 37, T__5 = 38, T__4 = 39, T__3 = 40, T__2 = 41, T__1 = 42, T__0 = 43, AND = 44, OR = 45, XOR = 46, LOGI_AND = 47, LOGI_OR = 48, MUL = 49, DIV = 50, PLUS = 51, MOD = 52, POW = 53, SLL = 54, SRA = 55, SRL = 56, EQ = 57, NOT_EQ = 58, LESS = 59, LESS_EQ = 60, GREATER = 61, GREATER_EQ = 62, ASSGN = 63, ADD_ASSGN = 64, SUB_ASSGN = 65, MUL_ASSGN = 66, DIV_ASSGN = 67, MOD_ASSGN = 68, AND_ASSGN = 69, XOR_ASSGN = 70, OR_ASSGN = 71, SLL_ASSGN = 72, SRL_ASSGN = 73, SRA_ASSGN = 74, ARITH_NEG = 75, BIT_NEG = 76, LOGIC_NEG = 77, ANY_INT = 78, ANY_UINT = 79, ANY_BIT = 80, ANY_IF = 81, ANY_ENUM = 82, BIT = 83, INT = 84, UINT = 85, INT32 = 86, UINT32 = 87, STRING = 88, BOOL = 89, ENUM = 90, INTERFACE = 91, FUNCTION = 92, MODULE = 93, TESTBENCH = 94, RULE_PS_LITERAL_TERMINAL = 95, RULE_ID = 96, RULE_STRING = 97, RULE_ML_COMMENT = 98, RULE_GENERATOR_CONTENT = 99, RULE_SL_COMMENT = 100, RULE_WS = 101; public static final String[] tokenNames = { "<INVALID>", "'default'", "'.*'", "'{'", "'for'", "'include'", "'('", "'package'", "','", "'const'", "']'", "'@'", "'#'", "'simulation'", "'register'", "'generate'", "'native'", "'process'", "'record'", "'inline'", "';'", "'extends'", "'}'", "'if'", "'?'", "'$rst'", "'inout'", "'switch'", "'.'", "'param'", "'case'", "'->'", "'out'", "'substitute'", "'$clk'", "':'", "'['", "'=>'", "'in'", "'else'", "')'", "'+:'", "'-:'", "'import'", "'&'", "'|'", "'^'", "'&&'", "'||'", "'*'", "'/'", "'+'", "'%'", "'**'", "'<<'", "'>>'", "'>>>'", "'=='", "'!='", "'<'", "'<='", "'>'", "'>='", "'='", "'+='", "'-='", "'*='", "'/='", "'%='", "'&='", "'^='", "'|='", "'<<='", "'>>>='", "'>>='", "'-'", "'~'", "'!'", "'int<>'", "'uint<>'", "'bit<>'", "'interface<>'", "'enum<>'", "'bit'", "'int'", "'uint'", "'int32'", "'uint32'", "'string'", "'bool'", "'enum'", "'interface'", "'function'", "'module'", "'testbench'", "RULE_PS_LITERAL_TERMINAL", "RULE_ID", "RULE_STRING", "RULE_ML_COMMENT", "RULE_GENERATOR_CONTENT", "RULE_SL_COMMENT", "RULE_WS" }; public static final int RULE_psModel = 0, RULE_psUnit = 1, RULE_psExtends = 2, RULE_psImports = 3, RULE_psQualifiedNameImport = 4, RULE_psBlock = 5, RULE_psProcess = 6, RULE_psInstantiation = 7, RULE_psInterfaceInstantiation = 8, RULE_psDirectGeneration = 9, RULE_psPassedArguments = 10, RULE_psArgument = 11, RULE_psCast = 12, RULE_psExpression = 13, RULE_psValue = 14, RULE_psBitAccess = 15, RULE_psAccessRange = 16, RULE_psVariableRef = 17, RULE_psRefPart = 18, RULE_psVariable = 19, RULE_psStatement = 20, RULE_psFunctionDeclaration = 21, RULE_psInlineFunction = 22, RULE_psSubstituteFunction = 23, RULE_psNativeFunction = 24, RULE_psFuncRecturnType = 25, RULE_psFuncParam = 26, RULE_psFuncSpec = 27, RULE_psFuncParamWithRW = 28, RULE_psFuncOptArray = 29, RULE_psFuncParamRWType = 30, RULE_psFuncParamType = 31, RULE_psFunction = 32, RULE_psFuncArgs = 33, RULE_psAssignmentOrFunc = 34, RULE_psAssignmentOp = 35, RULE_psCompoundStatement = 36, RULE_psIfStatement = 37, RULE_psSimpleBlock = 38, RULE_psForStatement = 39, RULE_psSwitchStatement = 40, RULE_psCaseStatements = 41, RULE_psDeclaration = 42, RULE_psDeclarationType = 43, RULE_psTypeDeclaration = 44, RULE_psEnumDeclaration = 45, RULE_psEnum = 46, RULE_psVariableDeclaration = 47, RULE_psDeclAssignment = 48, RULE_psArrayInit = 49, RULE_psArrayInitSubParens = 50, RULE_psArrayInitSub = 51, RULE_psArray = 52, RULE_psDirection = 53, RULE_psAnnotation = 54, RULE_psAnnotationType = 55, RULE_psPrimitive = 56, RULE_psPrimitiveType = 57, RULE_psWidth = 58, RULE_psInterfaceDeclaration = 59, RULE_psInterface = 60, RULE_psInterfaceExtends = 61, RULE_psInterfaceDecl = 62, RULE_psPortDeclaration = 63, RULE_psQualifiedName = 64; public static final String[] ruleNames = { "psModel", "psUnit", "psExtends", "psImports", "psQualifiedNameImport", "psBlock", "psProcess", "psInstantiation", "psInterfaceInstantiation", "psDirectGeneration", "psPassedArguments", "psArgument", "psCast", "psExpression", "psValue", "psBitAccess", "psAccessRange", "psVariableRef", "psRefPart", "psVariable", "psStatement", "psFunctionDeclaration", "psInlineFunction", "psSubstituteFunction", "psNativeFunction", "psFuncRecturnType", "psFuncParam", "psFuncSpec", "psFuncParamWithRW", "psFuncOptArray", "psFuncParamRWType", "psFuncParamType", "psFunction", "psFuncArgs", "psAssignmentOrFunc", "psAssignmentOp", "psCompoundStatement", "psIfStatement", "psSimpleBlock", "psForStatement", "psSwitchStatement", "psCaseStatements", "psDeclaration", "psDeclarationType", "psTypeDeclaration", "psEnumDeclaration", "psEnum", "psVariableDeclaration", "psDeclAssignment", "psArrayInit", "psArrayInitSubParens", "psArrayInitSub", "psArray", "psDirection", "psAnnotation", "psAnnotationType", "psPrimitive", "psPrimitiveType", "psWidth", "psInterfaceDeclaration", "psInterface", "psInterfaceExtends", "psInterfaceDecl", "psPortDeclaration", "psQualifiedName" }; @Override public String getGrammarFileName() { return "PSHDLLang.g4"; } @Override public String[] getTokenNames() { return tokenNames; } @Override public String[] getRuleNames() { return ruleNames; } @Override public String getSerializedATN() { return _serializedATN; } @Override public ATN getATN() { return _ATN; } public static final String MISSING_SEMI = "MISSING_SEMI"; public static final String MISSING_NAME = "MISSING_NAME"; public static final String MISSING_TYPE = "MISSING_TYPE"; public static final String MISSING_WIDTH = "MISSING_WIDTH"; public static final String MISSING_IFPAREN = "MISSING_IFPAREN"; public static final String WRONG_ORDER = "WRONG_ORDER"; public PSHDLLangParser(TokenStream input) { super(input); _interp = new ParserATNSimulator(this, _ATN, _decisionToDFA, _sharedContextCache); } public static class PsModelContext extends ParserRuleContext { public List<PsUnitContext> psUnit() { return getRuleContexts(PsUnitContext.class); } public List<PsDeclarationContext> psDeclaration() { return getRuleContexts(PsDeclarationContext.class); } public PsUnitContext psUnit(int i) { return getRuleContext(PsUnitContext.class, i); } public PsQualifiedNameContext psQualifiedName() { return getRuleContext(PsQualifiedNameContext.class, 0); } public PsDeclarationContext psDeclaration(int i) { return getRuleContext(PsDeclarationContext.class, i); } public PsModelContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psModel; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsModel(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsModel(this); } } } public final PsModelContext psModel() throws RecognitionException { final PsModelContext _localctx = new PsModelContext(_ctx, getState()); enterRule(_localctx, 0, RULE_psModel); int _la; try { enterOuterAlt(_localctx, 1); { setState(134); _la = _input.LA(1); if (_la == 7) { { setState(130); match(7); setState(131); psQualifiedName(); setState(132); match(20); } } setState(140); _errHandler.sync(this); _la = _input.LA(1); while (((((_la) & ~0x3f) == 0) && (((1L << _la) & ((1L << 9) | (1L << 11) | (1L << 13) | (1L << 14) | (1L << 16) | (1L << 18) | (1L << 19) | (1L << 26) | (1L << 29) | (1L << 32) | (1L << 33) | (1L << 38))) != 0)) || (((((_la - 78)) & ~0x3f) == 0) && (((1L << (_la - 78)) & ((1L << (ANY_INT - 78)) | (1L << (ANY_UINT - 78)) | (1L << (ANY_BIT - 78)) | (1L << (BIT - 78)) | (1L << (INT - 78)) | (1L << (UINT - 78)) | (1L << (INT32 - 78)) | (1L << (UINT32 - 78)) | (1L << (STRING - 78)) | (1L << (BOOL - 78)) | (1L << (ENUM - 78)) | (1L << (INTERFACE - 78)) | (1L << (MODULE - 78)) | (1L << (TESTBENCH - 78)))) != 0))) { { setState(138); switch (getInterpreter().adaptivePredict(_input, 1, _ctx)) { case 1: { setState(136); psUnit(); } break; case 2: { setState(137); psDeclaration(); } break; } } setState(142); _errHandler.sync(this); _la = _input.LA(1); } } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsUnitContext extends ParserRuleContext { public Token unitType; public PsImportsContext psImports(int i) { return getRuleContext(PsImportsContext.class, i); } public PsInterfaceContext psInterface() { return getRuleContext(PsInterfaceContext.class, 0); } public List<PsBlockContext> psBlock() { return getRuleContexts(PsBlockContext.class); } public PsAnnotationContext psAnnotation(int i) { return getRuleContext(PsAnnotationContext.class, i); } public List<PsImportsContext> psImports() { return getRuleContexts(PsImportsContext.class); } public PsBlockContext psBlock(int i) { return getRuleContext(PsBlockContext.class, i); } public PsExtendsContext psExtends() { return getRuleContext(PsExtendsContext.class, 0); } public List<PsAnnotationContext> psAnnotation() { return getRuleContexts(PsAnnotationContext.class); } public PsUnitContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psUnit; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsUnit(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsUnit(this); } } } public final PsUnitContext psUnit() throws RecognitionException { final PsUnitContext _localctx = new PsUnitContext(_ctx, getState()); enterRule(_localctx, 2, RULE_psUnit); int _la; try { setState(194); switch (getInterpreter().adaptivePredict(_input, 11, _ctx)) { case 1: enterOuterAlt(_localctx, 1); { setState(146); _errHandler.sync(this); _la = _input.LA(1); while (_la == 11) { { { setState(143); psAnnotation(); } } setState(148); _errHandler.sync(this); _la = _input.LA(1); } setState(149); _localctx.unitType = _input.LT(1); _la = _input.LA(1); if (!((_la == MODULE) || (_la == TESTBENCH))) { _localctx.unitType = _errHandler.recoverInline(this); } consume(); setState(150); psInterface(); setState(152); _la = _input.LA(1); if (_la == 21) { { setState(151); psExtends(); } } setState(154); match(3); setState(158); _errHandler.sync(this); _la = _input.LA(1); while (_la == 43) { { { setState(155); psImports(); } } setState(160); _errHandler.sync(this); _la = _input.LA(1); } setState(164); _errHandler.sync(this); _la = _input.LA(1); while (((((_la) & ~0x3f) == 0) && (((1L << _la) & ((1L << 3) | (1L << 4) | (1L << 5) | (1L << 9) | (1L << 11) | (1L << 13) | (1L << 14) | (1L << 16) | (1L << 17) | (1L << 18) | (1L << 19) | (1L << 23) | (1L << 25) | (1L << 26) | (1L << 27) | (1L << 29) | (1L << 32) | (1L << 33) | (1L << 34) | (1L << 38))) != 0)) || (((((_la - 78)) & ~0x3f) == 0) && (((1L << (_la - 78)) & ((1L << (ANY_INT - 78)) | (1L << (ANY_UINT - 78)) | (1L << (ANY_BIT - 78)) | (1L << (BIT - 78)) | (1L << (INT - 78)) | (1L << (UINT - 78)) | (1L << (INT32 - 78)) | (1L << (UINT32 - 78)) | (1L << (STRING - 78)) | (1L << (BOOL - 78)) | (1L << (ENUM - 78)) | (1L << (INTERFACE - 78)) | (1L << (RULE_ID - 78)))) != 0))) { { { setState(161); psBlock(); } } setState(166); _errHandler.sync(this); _la = _input.LA(1); } setState(167); match(22); } break; case 2: enterOuterAlt(_localctx, 2); { setState(172); _errHandler.sync(this); _la = _input.LA(1); while (_la == 11) { { { setState(169); psAnnotation(); } } setState(174); _errHandler.sync(this); _la = _input.LA(1); } setState(175); _localctx.unitType = _input.LT(1); _la = _input.LA(1); if (!((_la == MODULE) || (_la == TESTBENCH))) { _localctx.unitType = _errHandler.recoverInline(this); } consume(); setState(177); _la = _input.LA(1); if (_la == 21) { { setState(176); psExtends(); } } setState(179); match(3); setState(183); _errHandler.sync(this); _la = _input.LA(1); while (_la == 43) { { { setState(180); psImports(); } } setState(185); _errHandler.sync(this); _la = _input.LA(1); } setState(189); _errHandler.sync(this); _la = _input.LA(1); while (((((_la) & ~0x3f) == 0) && (((1L << _la) & ((1L << 3) | (1L << 4) | (1L << 5) | (1L << 9) | (1L << 11) | (1L << 13) | (1L << 14) | (1L << 16) | (1L << 17) | (1L << 18) | (1L << 19) | (1L << 23) | (1L << 25) | (1L << 26) | (1L << 27) | (1L << 29) | (1L << 32) | (1L << 33) | (1L << 34) | (1L << 38))) != 0)) || (((((_la - 78)) & ~0x3f) == 0) && (((1L << (_la - 78)) & ((1L << (ANY_INT - 78)) | (1L << (ANY_UINT - 78)) | (1L << (ANY_BIT - 78)) | (1L << (BIT - 78)) | (1L << (INT - 78)) | (1L << (UINT - 78)) | (1L << (INT32 - 78)) | (1L << (UINT32 - 78)) | (1L << (STRING - 78)) | (1L << (BOOL - 78)) | (1L << (ENUM - 78)) | (1L << (INTERFACE - 78)) | (1L << (RULE_ID - 78)))) != 0))) { { { setState(186); psBlock(); } } setState(191); _errHandler.sync(this); _la = _input.LA(1); } setState(192); match(22); notifyErrorListeners(MISSING_NAME); } break; } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsExtendsContext extends ParserRuleContext { public PsQualifiedNameContext psQualifiedName(int i) { return getRuleContext(PsQualifiedNameContext.class, i); } public List<PsQualifiedNameContext> psQualifiedName() { return getRuleContexts(PsQualifiedNameContext.class); } public PsExtendsContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psExtends; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsExtends(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsExtends(this); } } } public final PsExtendsContext psExtends() throws RecognitionException { final PsExtendsContext _localctx = new PsExtendsContext(_ctx, getState()); enterRule(_localctx, 4, RULE_psExtends); int _la; try { enterOuterAlt(_localctx, 1); { setState(196); match(21); setState(197); psQualifiedName(); setState(202); _errHandler.sync(this); _la = _input.LA(1); while (_la == 8) { { { setState(198); match(8); setState(199); psQualifiedName(); } } setState(204); _errHandler.sync(this); _la = _input.LA(1); } } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsImportsContext extends ParserRuleContext { public PsQualifiedNameImportContext psQualifiedNameImport() { return getRuleContext(PsQualifiedNameImportContext.class, 0); } public PsImportsContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psImports; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsImports(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsImports(this); } } } public final PsImportsContext psImports() throws RecognitionException { final PsImportsContext _localctx = new PsImportsContext(_ctx, getState()); enterRule(_localctx, 6, RULE_psImports); try { setState(213); switch (getInterpreter().adaptivePredict(_input, 13, _ctx)) { case 1: enterOuterAlt(_localctx, 1); { setState(205); match(43); setState(206); psQualifiedNameImport(); setState(207); match(20); } break; case 2: enterOuterAlt(_localctx, 2); { setState(209); match(43); setState(210); psQualifiedNameImport(); notifyErrorListeners(MISSING_SEMI); } break; } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsQualifiedNameImportContext extends ParserRuleContext { public PsQualifiedNameContext psQualifiedName() { return getRuleContext(PsQualifiedNameContext.class, 0); } public PsQualifiedNameImportContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psQualifiedNameImport; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsQualifiedNameImport(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsQualifiedNameImport(this); } } } public final PsQualifiedNameImportContext psQualifiedNameImport() throws RecognitionException { final PsQualifiedNameImportContext _localctx = new PsQualifiedNameImportContext(_ctx, getState()); enterRule(_localctx, 8, RULE_psQualifiedNameImport); int _la; try { enterOuterAlt(_localctx, 1); { setState(215); psQualifiedName(); setState(217); _la = _input.LA(1); if (_la == 2) { { setState(216); match(2); } } } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsBlockContext extends ParserRuleContext { public PsDeclarationContext psDeclaration() { return getRuleContext(PsDeclarationContext.class, 0); } public List<PsBlockContext> psBlock() { return getRuleContexts(PsBlockContext.class); } public PsInstantiationContext psInstantiation() { return getRuleContext(PsInstantiationContext.class, 0); } public PsBlockContext psBlock(int i) { return getRuleContext(PsBlockContext.class, i); } public PsStatementContext psStatement() { return getRuleContext(PsStatementContext.class, 0); } public PsBlockContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psBlock; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsBlock(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsBlock(this); } } } public final PsBlockContext psBlock() throws RecognitionException { final PsBlockContext _localctx = new PsBlockContext(_ctx, getState()); enterRule(_localctx, 10, RULE_psBlock); int _la; try { setState(232); switch (_input.LA(1)) { case 4: case 5: case 9: case 11: case 13: case 14: case 16: case 17: case 18: case 19: case 23: case 25: case 26: case 27: case 29: case 32: case 33: case 34: case 38: case ANY_INT: case ANY_UINT: case ANY_BIT: case BIT: case INT: case UINT: case INT32: case UINT32: case STRING: case BOOL: case ENUM: case INTERFACE: case RULE_ID: enterOuterAlt(_localctx, 1); { setState(222); switch (getInterpreter().adaptivePredict(_input, 15, _ctx)) { case 1: { setState(219); psDeclaration(); } break; case 2: { setState(220); psInstantiation(); } break; case 3: { setState(221); psStatement(); } break; } } break; case 3: enterOuterAlt(_localctx, 2); { { setState(224); match(3); setState(228); _errHandler.sync(this); _la = _input.LA(1); while (((((_la) & ~0x3f) == 0) && (((1L << _la) & ((1L << 3) | (1L << 4) | (1L << 5) | (1L << 9) | (1L << 11) | (1L << 13) | (1L << 14) | (1L << 16) | (1L << 17) | (1L << 18) | (1L << 19) | (1L << 23) | (1L << 25) | (1L << 26) | (1L << 27) | (1L << 29) | (1L << 32) | (1L << 33) | (1L << 34) | (1L << 38))) != 0)) || (((((_la - 78)) & ~0x3f) == 0) && (((1L << (_la - 78)) & ((1L << (ANY_INT - 78)) | (1L << (ANY_UINT - 78)) | (1L << (ANY_BIT - 78)) | (1L << (BIT - 78)) | (1L << (INT - 78)) | (1L << (UINT - 78)) | (1L << (INT32 - 78)) | (1L << (UINT32 - 78)) | (1L << (STRING - 78)) | (1L << (BOOL - 78)) | (1L << (ENUM - 78)) | (1L << (INTERFACE - 78)) | (1L << (RULE_ID - 78)))) != 0))) { { { setState(225); psBlock(); } } setState(230); _errHandler.sync(this); _la = _input.LA(1); } setState(231); match(22); } } break; default: throw new NoViableAltException(this); } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsProcessContext extends ParserRuleContext { public Token isProcess; public List<PsBlockContext> psBlock() { return getRuleContexts(PsBlockContext.class); } public PsBlockContext psBlock(int i) { return getRuleContext(PsBlockContext.class, i); } public PsProcessContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psProcess; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsProcess(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsProcess(this); } } } public final PsProcessContext psProcess() throws RecognitionException { final PsProcessContext _localctx = new PsProcessContext(_ctx, getState()); enterRule(_localctx, 12, RULE_psProcess); int _la; try { enterOuterAlt(_localctx, 1); { setState(234); _localctx.isProcess = match(17); setState(235); match(3); setState(239); _errHandler.sync(this); _la = _input.LA(1); while (((((_la) & ~0x3f) == 0) && (((1L << _la) & ((1L << 3) | (1L << 4) | (1L << 5) | (1L << 9) | (1L << 11) | (1L << 13) | (1L << 14) | (1L << 16) | (1L << 17) | (1L << 18) | (1L << 19) | (1L << 23) | (1L << 25) | (1L << 26) | (1L << 27) | (1L << 29) | (1L << 32) | (1L << 33) | (1L << 34) | (1L << 38))) != 0)) || (((((_la - 78)) & ~0x3f) == 0) && (((1L << (_la - 78)) & ((1L << (ANY_INT - 78)) | (1L << (ANY_UINT - 78)) | (1L << (ANY_BIT - 78)) | (1L << (BIT - 78)) | (1L << (INT - 78)) | (1L << (UINT - 78)) | (1L << (INT32 - 78)) | (1L << (UINT32 - 78)) | (1L << (STRING - 78)) | (1L << (BOOL - 78)) | (1L << (ENUM - 78)) | (1L << (INTERFACE - 78)) | (1L << (RULE_ID - 78)))) != 0))) { { { setState(236); psBlock(); } } setState(241); _errHandler.sync(this); _la = _input.LA(1); } setState(242); match(22); } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsInstantiationContext extends ParserRuleContext { public PsAnnotationContext psAnnotation(int i) { return getRuleContext(PsAnnotationContext.class, i); } public PsDirectGenerationContext psDirectGeneration() { return getRuleContext(PsDirectGenerationContext.class, 0); } public List<PsAnnotationContext> psAnnotation() { return getRuleContexts(PsAnnotationContext.class); } public PsInterfaceInstantiationContext psInterfaceInstantiation() { return getRuleContext(PsInterfaceInstantiationContext.class, 0); } public PsInstantiationContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psInstantiation; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsInstantiation(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsInstantiation(this); } } } public final PsInstantiationContext psInstantiation() throws RecognitionException { final PsInstantiationContext _localctx = new PsInstantiationContext(_ctx, getState()); enterRule(_localctx, 14, RULE_psInstantiation); int _la; try { enterOuterAlt(_localctx, 1); { setState(247); _errHandler.sync(this); _la = _input.LA(1); while (_la == 11) { { { setState(244); psAnnotation(); } } setState(249); _errHandler.sync(this); _la = _input.LA(1); } setState(252); switch (getInterpreter().adaptivePredict(_input, 20, _ctx)) { case 1: { setState(250); psInterfaceInstantiation(); } break; case 2: { setState(251); psDirectGeneration(); } break; } } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsInterfaceInstantiationContext extends ParserRuleContext { public PsPassedArgumentsContext psPassedArguments() { return getRuleContext(PsPassedArgumentsContext.class, 0); } public PsVariableContext psVariable() { return getRuleContext(PsVariableContext.class, 0); } public PsQualifiedNameContext psQualifiedName() { return getRuleContext(PsQualifiedNameContext.class, 0); } public PsArrayContext psArray() { return getRuleContext(PsArrayContext.class, 0); } public PsInterfaceInstantiationContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psInterfaceInstantiation; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsInterfaceInstantiation(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsInterfaceInstantiation(this); } } } public final PsInterfaceInstantiationContext psInterfaceInstantiation() throws RecognitionException { final PsInterfaceInstantiationContext _localctx = new PsInterfaceInstantiationContext(_ctx, getState()); enterRule(_localctx, 16, RULE_psInterfaceInstantiation); int _la; try { setState(274); switch (getInterpreter().adaptivePredict(_input, 25, _ctx)) { case 1: enterOuterAlt(_localctx, 1); { setState(254); psQualifiedName(); setState(255); psVariable(); setState(257); _la = _input.LA(1); if (_la == 36) { { setState(256); psArray(); } } setState(260); _la = _input.LA(1); if (_la == 6) { { setState(259); psPassedArguments(); } } setState(262); match(20); } break; case 2: enterOuterAlt(_localctx, 2); { setState(264); psQualifiedName(); setState(265); psVariable(); setState(267); _la = _input.LA(1); if (_la == 36) { { setState(266); psArray(); } } setState(270); _la = _input.LA(1); if (_la == 6) { { setState(269); psPassedArguments(); } } notifyErrorListeners(MISSING_SEMI); } break; } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsDirectGenerationContext extends ParserRuleContext { public Token isInclude; public TerminalNode RULE_GENERATOR_CONTENT() { return getToken(PSHDLLangParser.RULE_GENERATOR_CONTENT, 0); } public PsPassedArgumentsContext psPassedArguments() { return getRuleContext(PsPassedArgumentsContext.class, 0); } public PsInterfaceContext psInterface() { return getRuleContext(PsInterfaceContext.class, 0); } public PsVariableContext psVariable() { return getRuleContext(PsVariableContext.class, 0); } public TerminalNode RULE_ID() { return getToken(PSHDLLangParser.RULE_ID, 0); } public PsDirectGenerationContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psDirectGeneration; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsDirectGeneration(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsDirectGeneration(this); } } } public final PsDirectGenerationContext psDirectGeneration() throws RecognitionException { final PsDirectGenerationContext _localctx = new PsDirectGenerationContext(_ctx, getState()); enterRule(_localctx, 18, RULE_psDirectGeneration); int _la; try { setState(308); switch (getInterpreter().adaptivePredict(_input, 32, _ctx)) { case 1: enterOuterAlt(_localctx, 1); { setState(277); _la = _input.LA(1); if (_la == 5) { { setState(276); _localctx.isInclude = match(5); } } setState(279); psInterface(); setState(280); psVariable(); setState(281); match(ASSGN); setState(282); match(15); setState(283); match(RULE_ID); setState(285); _la = _input.LA(1); if (_la == 6) { { setState(284); psPassedArguments(); } } setState(288); _la = _input.LA(1); if (_la == RULE_GENERATOR_CONTENT) { { setState(287); match(RULE_GENERATOR_CONTENT); } } setState(290); match(20); } break; case 2: enterOuterAlt(_localctx, 2); { setState(293); _la = _input.LA(1); if (_la == 5) { { setState(292); _localctx.isInclude = match(5); } } setState(295); psInterface(); setState(296); psVariable(); setState(297); match(ASSGN); setState(298); match(15); setState(299); match(RULE_ID); setState(301); _la = _input.LA(1); if (_la == 6) { { setState(300); psPassedArguments(); } } setState(304); _la = _input.LA(1); if (_la == RULE_GENERATOR_CONTENT) { { setState(303); match(RULE_GENERATOR_CONTENT); } } notifyErrorListeners(MISSING_SEMI); } break; } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsPassedArgumentsContext extends ParserRuleContext { public PsArgumentContext psArgument(int i) { return getRuleContext(PsArgumentContext.class, i); } public List<PsArgumentContext> psArgument() { return getRuleContexts(PsArgumentContext.class); } public PsPassedArgumentsContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psPassedArguments; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsPassedArguments(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsPassedArguments(this); } } } public final PsPassedArgumentsContext psPassedArguments() throws RecognitionException { final PsPassedArgumentsContext _localctx = new PsPassedArgumentsContext(_ctx, getState()); enterRule(_localctx, 20, RULE_psPassedArguments); int _la; try { enterOuterAlt(_localctx, 1); { setState(310); match(6); setState(319); _la = _input.LA(1); if (_la == RULE_ID) { { setState(311); psArgument(); setState(316); _errHandler.sync(this); _la = _input.LA(1); while (_la == 8) { { { setState(312); match(8); setState(313); psArgument(); } } setState(318); _errHandler.sync(this); _la = _input.LA(1); } } } setState(321); match(40); } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsArgumentContext extends ParserRuleContext { public TerminalNode RULE_ID() { return getToken(PSHDLLangParser.RULE_ID, 0); } public PsExpressionContext psExpression() { return getRuleContext(PsExpressionContext.class, 0); } public PsArgumentContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psArgument; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsArgument(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsArgument(this); } } } public final PsArgumentContext psArgument() throws RecognitionException { final PsArgumentContext _localctx = new PsArgumentContext(_ctx, getState()); enterRule(_localctx, 22, RULE_psArgument); try { enterOuterAlt(_localctx, 1); { setState(323); match(RULE_ID); setState(324); match(ASSGN); setState(325); psExpression(0); } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsCastContext extends ParserRuleContext { public PsPrimitiveTypeContext psPrimitiveType() { return getRuleContext(PsPrimitiveTypeContext.class, 0); } public PsWidthContext psWidth() { return getRuleContext(PsWidthContext.class, 0); } public PsCastContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psCast; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsCast(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsCast(this); } } } public final PsCastContext psCast() throws RecognitionException { final PsCastContext _localctx = new PsCastContext(_ctx, getState()); enterRule(_localctx, 24, RULE_psCast); int _la; try { enterOuterAlt(_localctx, 1); { setState(327); match(6); setState(328); psPrimitiveType(); setState(330); _la = _input.LA(1); if (_la == LESS) { { setState(329); psWidth(); } } setState(332); match(40); } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsExpressionContext extends ParserRuleContext { public PsExpressionContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psExpression; } public PsExpressionContext() { } public void copyFrom(PsExpressionContext ctx) { super.copyFrom(ctx); } } public static class PsBitAndContext extends PsExpressionContext { public PsExpressionContext psExpression(int i) { return getRuleContext(PsExpressionContext.class, i); } public List<PsExpressionContext> psExpression() { return getRuleContexts(PsExpressionContext.class); } public PsBitAndContext(PsExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsBitAnd(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsBitAnd(this); } } } public static class PsAddContext extends PsExpressionContext { public Token op; public PsExpressionContext psExpression(int i) { return getRuleContext(PsExpressionContext.class, i); } public List<PsExpressionContext> psExpression() { return getRuleContexts(PsExpressionContext.class); } public PsAddContext(PsExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsAdd(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsAdd(this); } } } public static class PsConcatContext extends PsExpressionContext { public PsExpressionContext psExpression(int i) { return getRuleContext(PsExpressionContext.class, i); } public List<PsExpressionContext> psExpression() { return getRuleContexts(PsExpressionContext.class); } public PsConcatContext(PsExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsConcat(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsConcat(this); } } } public static class PsValueExpContext extends PsExpressionContext { public PsValueContext psValue() { return getRuleContext(PsValueContext.class, 0); } public PsValueExpContext(PsExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsValueExp(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsValueExp(this); } } } public static class PsShiftContext extends PsExpressionContext { public Token op; public PsExpressionContext psExpression(int i) { return getRuleContext(PsExpressionContext.class, i); } public List<PsExpressionContext> psExpression() { return getRuleContexts(PsExpressionContext.class); } public PsShiftContext(PsExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsShift(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsShift(this); } } } public static class PsBitLogAndContext extends PsExpressionContext { public PsExpressionContext psExpression(int i) { return getRuleContext(PsExpressionContext.class, i); } public List<PsExpressionContext> psExpression() { return getRuleContexts(PsExpressionContext.class); } public PsBitLogAndContext(PsExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsBitLogAnd(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsBitLogAnd(this); } } } public static class PsBitOrContext extends PsExpressionContext { public PsExpressionContext psExpression(int i) { return getRuleContext(PsExpressionContext.class, i); } public List<PsExpressionContext> psExpression() { return getRuleContexts(PsExpressionContext.class); } public PsBitOrContext(PsExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsBitOr(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsBitOr(this); } } } public static class PsParensContext extends PsExpressionContext { public PsExpressionContext psExpression() { return getRuleContext(PsExpressionContext.class, 0); } public PsParensContext(PsExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsParens(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsParens(this); } } } public static class PsEqualityCompContext extends PsExpressionContext { public Token op; public PsExpressionContext psExpression(int i) { return getRuleContext(PsExpressionContext.class, i); } public List<PsExpressionContext> psExpression() { return getRuleContexts(PsExpressionContext.class); } public PsEqualityCompContext(PsExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsEqualityComp(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsEqualityComp(this); } } } public static class PsBitLogOrContext extends PsExpressionContext { public PsExpressionContext psExpression(int i) { return getRuleContext(PsExpressionContext.class, i); } public List<PsExpressionContext> psExpression() { return getRuleContexts(PsExpressionContext.class); } public PsBitLogOrContext(PsExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsBitLogOr(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsBitLogOr(this); } } } public static class PsTernaryContext extends PsExpressionContext { public PsExpressionContext psExpression(int i) { return getRuleContext(PsExpressionContext.class, i); } public List<PsExpressionContext> psExpression() { return getRuleContexts(PsExpressionContext.class); } public PsTernaryContext(PsExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsTernary(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsTernary(this); } } } public static class PsArrayInitExpContext extends PsExpressionContext { public PsArrayInitSubParensContext psArrayInitSubParens() { return getRuleContext(PsArrayInitSubParensContext.class, 0); } public PsArrayInitExpContext(PsExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsArrayInitExp(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsArrayInitExp(this); } } } public static class PsManipContext extends PsExpressionContext { public Token type; public PsExpressionContext psExpression() { return getRuleContext(PsExpressionContext.class, 0); } public PsCastContext psCast() { return getRuleContext(PsCastContext.class, 0); } public PsManipContext(PsExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsManip(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsManip(this); } } } public static class PsEqualityContext extends PsExpressionContext { public Token op; public PsExpressionContext psExpression(int i) { return getRuleContext(PsExpressionContext.class, i); } public List<PsExpressionContext> psExpression() { return getRuleContexts(PsExpressionContext.class); } public PsEqualityContext(PsExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsEquality(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsEquality(this); } } } public static class PsBitXorContext extends PsExpressionContext { public PsExpressionContext psExpression(int i) { return getRuleContext(PsExpressionContext.class, i); } public List<PsExpressionContext> psExpression() { return getRuleContexts(PsExpressionContext.class); } public PsBitXorContext(PsExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsBitXor(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsBitXor(this); } } } public static class PsMulContext extends PsExpressionContext { public Token op; public PsExpressionContext psExpression(int i) { return getRuleContext(PsExpressionContext.class, i); } public List<PsExpressionContext> psExpression() { return getRuleContexts(PsExpressionContext.class); } public PsMulContext(PsExpressionContext ctx) { copyFrom(ctx); } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsMul(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsMul(this); } } } public final PsExpressionContext psExpression() throws RecognitionException { return psExpression(0); } private PsExpressionContext psExpression(int _p) throws RecognitionException { final ParserRuleContext _parentctx = _ctx; final int _parentState = getState(); PsExpressionContext _localctx = new PsExpressionContext(_ctx, _parentState); PsExpressionContext _prevctx = _localctx; final int _startState = 26; enterRecursionRule(_localctx, 26, RULE_psExpression, _p); int _la; try { int _alt; enterOuterAlt(_localctx, 1); { setState(348); switch (getInterpreter().adaptivePredict(_input, 37, _ctx)) { case 1: { _localctx = new PsManipContext(_localctx); _ctx = _localctx; _prevctx = _localctx; setState(339); switch (_input.LA(1)) { case 6: { setState(335); psCast(); } break; case LOGIC_NEG: { setState(336); ((PsManipContext) _localctx).type = match(LOGIC_NEG); } break; case BIT_NEG: { setState(337); ((PsManipContext) _localctx).type = match(BIT_NEG); } break; case ARITH_NEG: { setState(338); ((PsManipContext) _localctx).type = match(ARITH_NEG); } break; default: throw new NoViableAltException(this); } setState(341); psExpression(16); } break; case 2: { _localctx = new PsValueExpContext(_localctx); _ctx = _localctx; _prevctx = _localctx; setState(342); psValue(); } break; case 3: { _localctx = new PsArrayInitExpContext(_localctx); _ctx = _localctx; _prevctx = _localctx; setState(343); psArrayInitSubParens(); } break; case 4: { _localctx = new PsParensContext(_localctx); _ctx = _localctx; _prevctx = _localctx; setState(344); match(6); setState(345); psExpression(0); setState(346); match(40); } break; } _ctx.stop = _input.LT(-1); setState(391); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input, 39, _ctx); while ((_alt != 2) && (_alt != ATN.INVALID_ALT_NUMBER)) { if (_alt == 1) { if (_parseListeners != null) { triggerExitRuleEvent(); } _prevctx = _localctx; { setState(389); switch (getInterpreter().adaptivePredict(_input, 38, _ctx)) { case 1: { _localctx = new PsMulContext(new PsExpressionContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_psExpression); setState(350); if (!(precpred(_ctx, 15))) throw new FailedPredicateException(this, "precpred(_ctx, 15)"); setState(351); ((PsMulContext) _localctx).op = _input.LT(1); _la = _input.LA(1); if (!(((((_la) & ~0x3f) == 0) && (((1L << _la) & ((1L << MUL) | (1L << DIV) | (1L << MOD) | (1L << POW))) != 0)))) { ((PsMulContext) _localctx).op = _errHandler.recoverInline(this); } consume(); setState(352); psExpression(16); } break; case 2: { _localctx = new PsAddContext(new PsExpressionContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_psExpression); setState(353); if (!(precpred(_ctx, 14))) throw new FailedPredicateException(this, "precpred(_ctx, 14)"); setState(354); ((PsAddContext) _localctx).op = _input.LT(1); _la = _input.LA(1); if (!((_la == PLUS) || (_la == ARITH_NEG))) { ((PsAddContext) _localctx).op = _errHandler.recoverInline(this); } consume(); setState(355); psExpression(15); } break; case 3: { _localctx = new PsShiftContext(new PsExpressionContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_psExpression); setState(356); if (!(precpred(_ctx, 13))) throw new FailedPredicateException(this, "precpred(_ctx, 13)"); setState(357); ((PsShiftContext) _localctx).op = _input.LT(1); _la = _input.LA(1); if (!(((((_la) & ~0x3f) == 0) && (((1L << _la) & ((1L << SLL) | (1L << SRA) | (1L << SRL))) != 0)))) { ((PsShiftContext) _localctx).op = _errHandler.recoverInline(this); } consume(); setState(358); psExpression(14); } break; case 4: { _localctx = new PsEqualityCompContext(new PsExpressionContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_psExpression); setState(359); if (!(precpred(_ctx, 12))) throw new FailedPredicateException(this, "precpred(_ctx, 12)"); setState(360); ((PsEqualityCompContext) _localctx).op = _input.LT(1); _la = _input.LA(1); if (!(((((_la) & ~0x3f) == 0) && (((1L << _la) & ((1L << LESS) | (1L << LESS_EQ) | (1L << GREATER) | (1L << GREATER_EQ))) != 0)))) { ((PsEqualityCompContext) _localctx).op = _errHandler.recoverInline(this); } consume(); setState(361); psExpression(13); } break; case 5: { _localctx = new PsEqualityContext(new PsExpressionContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_psExpression); setState(362); if (!(precpred(_ctx, 11))) throw new FailedPredicateException(this, "precpred(_ctx, 11)"); setState(363); ((PsEqualityContext) _localctx).op = _input.LT(1); _la = _input.LA(1); if (!((_la == EQ) || (_la == NOT_EQ))) { ((PsEqualityContext) _localctx).op = _errHandler.recoverInline(this); } consume(); setState(364); psExpression(12); } break; case 6: { _localctx = new PsBitAndContext(new PsExpressionContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_psExpression); setState(365); if (!(precpred(_ctx, 10))) throw new FailedPredicateException(this, "precpred(_ctx, 10)"); setState(366); match(AND); setState(367); psExpression(11); } break; case 7: { _localctx = new PsBitXorContext(new PsExpressionContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_psExpression); setState(368); if (!(precpred(_ctx, 9))) throw new FailedPredicateException(this, "precpred(_ctx, 9)"); setState(369); match(XOR); setState(370); psExpression(9); } break; case 8: { _localctx = new PsBitOrContext(new PsExpressionContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_psExpression); setState(371); if (!(precpred(_ctx, 8))) throw new FailedPredicateException(this, "precpred(_ctx, 8)"); setState(372); match(OR); setState(373); psExpression(9); } break; case 9: { _localctx = new PsConcatContext(new PsExpressionContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_psExpression); setState(374); if (!(precpred(_ctx, 7))) throw new FailedPredicateException(this, "precpred(_ctx, 7)"); setState(375); match(12); setState(376); psExpression(8); } break; case 10: { _localctx = new PsBitLogAndContext(new PsExpressionContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_psExpression); setState(377); if (!(precpred(_ctx, 6))) throw new FailedPredicateException(this, "precpred(_ctx, 6)"); setState(378); match(LOGI_AND); setState(379); psExpression(7); } break; case 11: { _localctx = new PsBitLogOrContext(new PsExpressionContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_psExpression); setState(380); if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)"); setState(381); match(LOGI_OR); setState(382); psExpression(6); } break; case 12: { _localctx = new PsTernaryContext(new PsExpressionContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_psExpression); setState(383); if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)"); setState(384); match(24); setState(385); psExpression(0); setState(386); match(35); setState(387); psExpression(5); } break; } } } setState(393); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input, 39, _ctx); } } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { unrollRecursionContexts(_parentctx); } return _localctx; } public static class PsValueContext extends ParserRuleContext { public TerminalNode RULE_STRING() { return getToken(PSHDLLangParser.RULE_STRING, 0); } public TerminalNode RULE_PS_LITERAL_TERMINAL() { return getToken(PSHDLLangParser.RULE_PS_LITERAL_TERMINAL, 0); } public PsVariableRefContext psVariableRef() { return getRuleContext(PsVariableRefContext.class, 0); } public PsValueContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psValue; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsValue(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsValue(this); } } } public final PsValueContext psValue() throws RecognitionException { final PsValueContext _localctx = new PsValueContext(_ctx, getState()); enterRule(_localctx, 28, RULE_psValue); try { setState(397); switch (_input.LA(1)) { case RULE_PS_LITERAL_TERMINAL: enterOuterAlt(_localctx, 1); { setState(394); match(RULE_PS_LITERAL_TERMINAL); } break; case 25: case 34: case RULE_ID: enterOuterAlt(_localctx, 2); { setState(395); psVariableRef(); } break; case RULE_STRING: enterOuterAlt(_localctx, 3); { setState(396); match(RULE_STRING); } break; default: throw new NoViableAltException(this); } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsBitAccessContext extends ParserRuleContext { public PsAccessRangeContext psAccessRange(int i) { return getRuleContext(PsAccessRangeContext.class, i); } public List<PsAccessRangeContext> psAccessRange() { return getRuleContexts(PsAccessRangeContext.class); } public PsBitAccessContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psBitAccess; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsBitAccess(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsBitAccess(this); } } } public final PsBitAccessContext psBitAccess() throws RecognitionException { final PsBitAccessContext _localctx = new PsBitAccessContext(_ctx, getState()); enterRule(_localctx, 30, RULE_psBitAccess); int _la; try { enterOuterAlt(_localctx, 1); { setState(399); match(3); setState(400); psAccessRange(); setState(405); _errHandler.sync(this); _la = _input.LA(1); while (_la == 8) { { { setState(401); match(8); setState(402); psAccessRange(); } } setState(407); _errHandler.sync(this); _la = _input.LA(1); } setState(408); match(22); } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsAccessRangeContext extends ParserRuleContext { public PsExpressionContext from; public PsExpressionContext to; public PsExpressionContext inc; public PsExpressionContext dec; public PsExpressionContext psExpression(int i) { return getRuleContext(PsExpressionContext.class, i); } public List<PsExpressionContext> psExpression() { return getRuleContexts(PsExpressionContext.class); } public PsAccessRangeContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psAccessRange; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsAccessRange(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsAccessRange(this); } } } public final PsAccessRangeContext psAccessRange() throws RecognitionException { final PsAccessRangeContext _localctx = new PsAccessRangeContext(_ctx, getState()); enterRule(_localctx, 32, RULE_psAccessRange); try { enterOuterAlt(_localctx, 1); { setState(410); _localctx.from = psExpression(0); setState(417); switch (_input.LA(1)) { case 35: { { setState(411); match(35); setState(412); _localctx.to = psExpression(0); } } break; case 41: { { setState(413); match(41); setState(414); _localctx.inc = psExpression(0); } } break; case 42: { { setState(415); match(42); setState(416); _localctx.dec = psExpression(0); } } break; case 8: case 22: break; default: throw new NoViableAltException(this); } } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsVariableRefContext extends ParserRuleContext { public Token isClk; public Token isRst; public List<PsRefPartContext> psRefPart() { return getRuleContexts(PsRefPartContext.class); } public PsRefPartContext psRefPart(int i) { return getRuleContext(PsRefPartContext.class, i); } public PsVariableRefContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psVariableRef; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsVariableRef(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsVariableRef(this); } } } public final PsVariableRefContext psVariableRef() throws RecognitionException { final PsVariableRefContext _localctx = new PsVariableRefContext(_ctx, getState()); enterRule(_localctx, 34, RULE_psVariableRef); try { int _alt; setState(429); switch (_input.LA(1)) { case RULE_ID: enterOuterAlt(_localctx, 1); { setState(419); psRefPart(); setState(424); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input, 43, _ctx); while ((_alt != 2) && (_alt != ATN.INVALID_ALT_NUMBER)) { if (_alt == 1) { { { setState(420); match(28); setState(421); psRefPart(); } } } setState(426); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input, 43, _ctx); } } break; case 34: enterOuterAlt(_localctx, 2); { setState(427); _localctx.isClk = match(34); } break; case 25: enterOuterAlt(_localctx, 3); { setState(428); _localctx.isRst = match(25); } break; default: throw new NoViableAltException(this); } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsRefPartContext extends ParserRuleContext { public PsFuncArgsContext psFuncArgs() { return getRuleContext(PsFuncArgsContext.class, 0); } public PsArrayContext psArray() { return getRuleContext(PsArrayContext.class, 0); } public TerminalNode RULE_ID() { return getToken(PSHDLLangParser.RULE_ID, 0); } public PsBitAccessContext psBitAccess() { return getRuleContext(PsBitAccessContext.class, 0); } public PsRefPartContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psRefPart; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsRefPart(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsRefPart(this); } } } public final PsRefPartContext psRefPart() throws RecognitionException { final PsRefPartContext _localctx = new PsRefPartContext(_ctx, getState()); enterRule(_localctx, 36, RULE_psRefPart); try { enterOuterAlt(_localctx, 1); { setState(431); match(RULE_ID); setState(439); switch (getInterpreter().adaptivePredict(_input, 47, _ctx)) { case 1: { setState(433); switch (getInterpreter().adaptivePredict(_input, 45, _ctx)) { case 1: { setState(432); psArray(); } break; } setState(436); switch (getInterpreter().adaptivePredict(_input, 46, _ctx)) { case 1: { setState(435); psBitAccess(); } break; } } break; case 2: { setState(438); psFuncArgs(); } break; } } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsVariableContext extends ParserRuleContext { public TerminalNode RULE_ID() { return getToken(PSHDLLangParser.RULE_ID, 0); } public PsVariableContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psVariable; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsVariable(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsVariable(this); } } } public final PsVariableContext psVariable() throws RecognitionException { final PsVariableContext _localctx = new PsVariableContext(_ctx, getState()); enterRule(_localctx, 38, RULE_psVariable); try { enterOuterAlt(_localctx, 1); { setState(441); match(RULE_ID); } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsStatementContext extends ParserRuleContext { public PsProcessContext psProcess() { return getRuleContext(PsProcessContext.class, 0); } public PsAssignmentOrFuncContext psAssignmentOrFunc() { return getRuleContext(PsAssignmentOrFuncContext.class, 0); } public PsCompoundStatementContext psCompoundStatement() { return getRuleContext(PsCompoundStatementContext.class, 0); } public PsStatementContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psStatement; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsStatement(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsStatement(this); } } } public final PsStatementContext psStatement() throws RecognitionException { final PsStatementContext _localctx = new PsStatementContext(_ctx, getState()); enterRule(_localctx, 40, RULE_psStatement); try { setState(446); switch (_input.LA(1)) { case 4: case 23: case 27: enterOuterAlt(_localctx, 1); { setState(443); psCompoundStatement(); } break; case 17: enterOuterAlt(_localctx, 2); { setState(444); psProcess(); } break; case 25: case 34: case RULE_ID: enterOuterAlt(_localctx, 3); { setState(445); psAssignmentOrFunc(); } break; default: throw new NoViableAltException(this); } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsFunctionDeclarationContext extends ParserRuleContext { public PsNativeFunctionContext psNativeFunction() { return getRuleContext(PsNativeFunctionContext.class, 0); } public PsInlineFunctionContext psInlineFunction() { return getRuleContext(PsInlineFunctionContext.class, 0); } public PsSubstituteFunctionContext psSubstituteFunction() { return getRuleContext(PsSubstituteFunctionContext.class, 0); } public PsFunctionDeclarationContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psFunctionDeclaration; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsFunctionDeclaration(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsFunctionDeclaration(this); } } } public final PsFunctionDeclarationContext psFunctionDeclaration() throws RecognitionException { final PsFunctionDeclarationContext _localctx = new PsFunctionDeclarationContext(_ctx, getState()); enterRule(_localctx, 42, RULE_psFunctionDeclaration); try { setState(451); switch (_input.LA(1)) { case 13: case 16: enterOuterAlt(_localctx, 1); { setState(448); psNativeFunction(); } break; case 19: enterOuterAlt(_localctx, 2); { setState(449); psInlineFunction(); } break; case 33: enterOuterAlt(_localctx, 3); { setState(450); psSubstituteFunction(); } break; default: throw new NoViableAltException(this); } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsInlineFunctionContext extends ParserRuleContext { public PsFuncParamContext psFuncParam() { return getRuleContext(PsFuncParamContext.class, 0); } public PsFuncRecturnTypeContext psFuncRecturnType() { return getRuleContext(PsFuncRecturnTypeContext.class, 0); } public PsExpressionContext psExpression() { return getRuleContext(PsExpressionContext.class, 0); } public PsFunctionContext psFunction() { return getRuleContext(PsFunctionContext.class, 0); } public PsInlineFunctionContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psInlineFunction; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsInlineFunction(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsInlineFunction(this); } } } public final PsInlineFunctionContext psInlineFunction() throws RecognitionException { final PsInlineFunctionContext _localctx = new PsInlineFunctionContext(_ctx, getState()); enterRule(_localctx, 44, RULE_psInlineFunction); try { enterOuterAlt(_localctx, 1); { setState(453); match(19); setState(454); match(FUNCTION); setState(455); psFuncRecturnType(); setState(456); psFunction(); setState(457); psFuncParam(); setState(458); match(31); setState(459); match(6); setState(460); psExpression(0); setState(461); match(40); } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsSubstituteFunctionContext extends ParserRuleContext { public PsFuncParamContext psFuncParam() { return getRuleContext(PsFuncParamContext.class, 0); } public PsStatementContext psStatement(int i) { return getRuleContext(PsStatementContext.class, i); } public PsFuncRecturnTypeContext psFuncRecturnType() { return getRuleContext(PsFuncRecturnTypeContext.class, 0); } public List<PsStatementContext> psStatement() { return getRuleContexts(PsStatementContext.class); } public PsFunctionContext psFunction() { return getRuleContext(PsFunctionContext.class, 0); } public PsSubstituteFunctionContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psSubstituteFunction; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsSubstituteFunction(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsSubstituteFunction(this); } } } public final PsSubstituteFunctionContext psSubstituteFunction() throws RecognitionException { final PsSubstituteFunctionContext _localctx = new PsSubstituteFunctionContext(_ctx, getState()); enterRule(_localctx, 46, RULE_psSubstituteFunction); int _la; try { enterOuterAlt(_localctx, 1); { setState(463); match(33); setState(464); match(FUNCTION); setState(466); _la = _input.LA(1); if ((((((_la - 78)) & ~0x3f) == 0) && (((1L << (_la - 78)) & ((1L << (ANY_INT - 78)) | (1L << (ANY_UINT - 78)) | (1L << (ANY_BIT - 78)) | (1L << (ANY_IF - 78)) | (1L << (ANY_ENUM - 78)) | (1L << (BIT - 78)) | (1L << (INT - 78)) | (1L << (UINT - 78)) | (1L << (STRING - 78)) | (1L << (BOOL - 78)) | (1L << (ENUM - 78)) | (1L << (INTERFACE - 78)) | (1L << (FUNCTION - 78)))) != 0))) { { setState(465); psFuncRecturnType(); } } setState(468); psFunction(); setState(469); psFuncParam(); setState(470); match(3); setState(474); _errHandler.sync(this); _la = _input.LA(1); while (((((_la) & ~0x3f) == 0) && (((1L << _la) & ((1L << 4) | (1L << 17) | (1L << 23) | (1L << 25) | (1L << 27) | (1L << 34))) != 0)) || (_la == RULE_ID)) { { { setState(471); psStatement(); } } setState(476); _errHandler.sync(this); _la = _input.LA(1); } setState(477); match(22); } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsNativeFunctionContext extends ParserRuleContext { public Token isSim; public PsFuncParamContext psFuncParam() { return getRuleContext(PsFuncParamContext.class, 0); } public PsFuncRecturnTypeContext psFuncRecturnType() { return getRuleContext(PsFuncRecturnTypeContext.class, 0); } public PsFunctionContext psFunction() { return getRuleContext(PsFunctionContext.class, 0); } public PsNativeFunctionContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psNativeFunction; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsNativeFunction(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsNativeFunction(this); } } } public final PsNativeFunctionContext psNativeFunction() throws RecognitionException { final PsNativeFunctionContext _localctx = new PsNativeFunctionContext(_ctx, getState()); enterRule(_localctx, 48, RULE_psNativeFunction); int _la; try { enterOuterAlt(_localctx, 1); { setState(480); _la = _input.LA(1); if (_la == 13) { { setState(479); _localctx.isSim = match(13); } } setState(482); match(16); setState(483); match(FUNCTION); setState(485); _la = _input.LA(1); if ((((((_la - 78)) & ~0x3f) == 0) && (((1L << (_la - 78)) & ((1L << (ANY_INT - 78)) | (1L << (ANY_UINT - 78)) | (1L << (ANY_BIT - 78)) | (1L << (ANY_IF - 78)) | (1L << (ANY_ENUM - 78)) | (1L << (BIT - 78)) | (1L << (INT - 78)) | (1L << (UINT - 78)) | (1L << (STRING - 78)) | (1L << (BOOL - 78)) | (1L << (ENUM - 78)) | (1L << (INTERFACE - 78)) | (1L << (FUNCTION - 78)))) != 0))) { { setState(484); psFuncRecturnType(); } } setState(487); psFunction(); setState(488); psFuncParam(); setState(489); match(20); } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsFuncRecturnTypeContext extends ParserRuleContext { public PsFuncOptArrayContext psFuncOptArray; public List<PsFuncOptArrayContext> dims = new ArrayList<PsFuncOptArrayContext>(); public List<PsFuncOptArrayContext> psFuncOptArray() { return getRuleContexts(PsFuncOptArrayContext.class); } public PsFuncParamTypeContext psFuncParamType() { return getRuleContext(PsFuncParamTypeContext.class, 0); } public PsFuncOptArrayContext psFuncOptArray(int i) { return getRuleContext(PsFuncOptArrayContext.class, i); } public PsFuncRecturnTypeContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psFuncRecturnType; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsFuncRecturnType(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsFuncRecturnType(this); } } } public final PsFuncRecturnTypeContext psFuncRecturnType() throws RecognitionException { final PsFuncRecturnTypeContext _localctx = new PsFuncRecturnTypeContext(_ctx, getState()); enterRule(_localctx, 50, RULE_psFuncRecturnType); int _la; try { enterOuterAlt(_localctx, 1); { setState(491); psFuncParamType(); setState(495); _errHandler.sync(this); _la = _input.LA(1); while (_la == 36) { { { setState(492); _localctx.psFuncOptArray = psFuncOptArray(); _localctx.dims.add(_localctx.psFuncOptArray); } } setState(497); _errHandler.sync(this); _la = _input.LA(1); } } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsFuncParamContext extends ParserRuleContext { public List<PsFuncSpecContext> psFuncSpec() { return getRuleContexts(PsFuncSpecContext.class); } public PsFuncSpecContext psFuncSpec(int i) { return getRuleContext(PsFuncSpecContext.class, i); } public PsFuncParamContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psFuncParam; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsFuncParam(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsFuncParam(this); } } } public final PsFuncParamContext psFuncParam() throws RecognitionException { final PsFuncParamContext _localctx = new PsFuncParamContext(_ctx, getState()); enterRule(_localctx, 52, RULE_psFuncParam); int _la; try { enterOuterAlt(_localctx, 1); { setState(498); match(6); setState(507); _la = _input.LA(1); if (((((_la) & ~0x3f) == 0) && (((1L << _la) & ((1L << 9) | (1L << MUL) | (1L << PLUS))) != 0)) || (((((_la - 75)) & ~0x3f) == 0) && (((1L << (_la - 75)) & ((1L << (ARITH_NEG - 75)) | (1L << (ANY_INT - 75)) | (1L << (ANY_UINT - 75)) | (1L << (ANY_BIT - 75)) | (1L << (ANY_IF - 75)) | (1L << (ANY_ENUM - 75)) | (1L << (BIT - 75)) | (1L << (INT - 75)) | (1L << (UINT - 75)) | (1L << (STRING - 75)) | (1L << (BOOL - 75)) | (1L << (ENUM - 75)) | (1L << (INTERFACE - 75)) | (1L << (FUNCTION - 75)))) != 0))) { { setState(499); psFuncSpec(); setState(504); _errHandler.sync(this); _la = _input.LA(1); while (_la == 8) { { { setState(500); match(8); setState(501); psFuncSpec(); } } setState(506); _errHandler.sync(this); _la = _input.LA(1); } } } setState(509); match(40); } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsFuncSpecContext extends ParserRuleContext { public PsFuncOptArrayContext psFuncOptArray; public List<PsFuncOptArrayContext> dims = new ArrayList<PsFuncOptArrayContext>(); public List<PsFuncOptArrayContext> psFuncOptArray() { return getRuleContexts(PsFuncOptArrayContext.class); } public PsFuncParamWithRWContext psFuncParamWithRW() { return getRuleContext(PsFuncParamWithRWContext.class, 0); } public PsFuncOptArrayContext psFuncOptArray(int i) { return getRuleContext(PsFuncOptArrayContext.class, i); } public TerminalNode RULE_ID() { return getToken(PSHDLLangParser.RULE_ID, 0); } public PsFuncSpecContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psFuncSpec; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsFuncSpec(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsFuncSpec(this); } } } public final PsFuncSpecContext psFuncSpec() throws RecognitionException { final PsFuncSpecContext _localctx = new PsFuncSpecContext(_ctx, getState()); enterRule(_localctx, 54, RULE_psFuncSpec); int _la; try { enterOuterAlt(_localctx, 1); { setState(511); psFuncParamWithRW(); setState(512); match(RULE_ID); setState(516); _errHandler.sync(this); _la = _input.LA(1); while (_la == 36) { { { setState(513); _localctx.psFuncOptArray = psFuncOptArray(); _localctx.dims.add(_localctx.psFuncOptArray); } } setState(518); _errHandler.sync(this); _la = _input.LA(1); } } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsFuncParamWithRWContext extends ParserRuleContext { public Token constant; public PsFuncParamRWTypeContext psFuncParamRWType() { return getRuleContext(PsFuncParamRWTypeContext.class, 0); } public PsFuncParamTypeContext psFuncParamType() { return getRuleContext(PsFuncParamTypeContext.class, 0); } public PsFuncParamWithRWContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psFuncParamWithRW; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsFuncParamWithRW(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsFuncParamWithRW(this); } } } public final PsFuncParamWithRWContext psFuncParamWithRW() throws RecognitionException { final PsFuncParamWithRWContext _localctx = new PsFuncParamWithRWContext(_ctx, getState()); enterRule(_localctx, 56, RULE_psFuncParamWithRW); int _la; try { enterOuterAlt(_localctx, 1); { setState(525); switch (getInterpreter().adaptivePredict(_input, 60, _ctx)) { case 1: { setState(520); _la = _input.LA(1); if ((((((_la - 49)) & ~0x3f) == 0) && (((1L << (_la - 49)) & ((1L << (MUL - 49)) | (1L << (PLUS - 49)) | (1L << (ARITH_NEG - 49)))) != 0))) { { setState(519); psFuncParamRWType(); } } } break; case 2: { setState(523); _la = _input.LA(1); if (_la == 9) { { setState(522); _localctx.constant = match(9); } } } break; } setState(527); psFuncParamType(); } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsFuncOptArrayContext extends ParserRuleContext { public PsExpressionContext psExpression() { return getRuleContext(PsExpressionContext.class, 0); } public PsFuncOptArrayContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psFuncOptArray; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsFuncOptArray(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsFuncOptArray(this); } } } public final PsFuncOptArrayContext psFuncOptArray() throws RecognitionException { final PsFuncOptArrayContext _localctx = new PsFuncOptArrayContext(_ctx, getState()); enterRule(_localctx, 58, RULE_psFuncOptArray); int _la; try { enterOuterAlt(_localctx, 1); { { setState(529); match(36); setState(531); _la = _input.LA(1); if (((((_la) & ~0x3f) == 0) && (((1L << _la) & ((1L << 3) | (1L << 6) | (1L << 25) | (1L << 34))) != 0)) || (((((_la - 75)) & ~0x3f) == 0) && (((1L << (_la - 75)) & ((1L << (ARITH_NEG - 75)) | (1L << (BIT_NEG - 75)) | (1L << (LOGIC_NEG - 75)) | (1L << (RULE_PS_LITERAL_TERMINAL - 75)) | (1L << (RULE_ID - 75)) | (1L << (RULE_STRING - 75)))) != 0))) { { setState(530); psExpression(0); } } setState(533); match(10); } } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsFuncParamRWTypeContext extends ParserRuleContext { public PsFuncParamRWTypeContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psFuncParamRWType; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsFuncParamRWType(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsFuncParamRWType(this); } } } public final PsFuncParamRWTypeContext psFuncParamRWType() throws RecognitionException { final PsFuncParamRWTypeContext _localctx = new PsFuncParamRWTypeContext(_ctx, getState()); enterRule(_localctx, 60, RULE_psFuncParamRWType); int _la; try { enterOuterAlt(_localctx, 1); { setState(535); _la = _input.LA(1); if (!((((((_la - 49)) & ~0x3f) == 0) && (((1L << (_la - 49)) & ((1L << (MUL - 49)) | (1L << (PLUS - 49)) | (1L << (ARITH_NEG - 49)))) != 0)))) { _errHandler.recoverInline(this); } consume(); } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsFuncParamTypeContext extends ParserRuleContext { public PsFuncParamTypeContext returnType; public TerminalNode BOOL() { return getToken(PSHDLLangParser.BOOL, 0); } public TerminalNode ANY_IF() { return getToken(PSHDLLangParser.ANY_IF, 0); } public PsFuncParamTypeContext psFuncParamType() { return getRuleContext(PsFuncParamTypeContext.class, 0); } public PsQualifiedNameContext psQualifiedName() { return getRuleContext(PsQualifiedNameContext.class, 0); } public List<PsFuncParamWithRWContext> psFuncParamWithRW() { return getRuleContexts(PsFuncParamWithRWContext.class); } public TerminalNode STRING() { return getToken(PSHDLLangParser.STRING, 0); } public TerminalNode INT() { return getToken(PSHDLLangParser.INT, 0); } public TerminalNode INTERFACE() { return getToken(PSHDLLangParser.INTERFACE, 0); } public TerminalNode ANY_INT() { return getToken(PSHDLLangParser.ANY_INT, 0); } public PsWidthContext psWidth() { return getRuleContext(PsWidthContext.class, 0); } public TerminalNode ANY_ENUM() { return getToken(PSHDLLangParser.ANY_ENUM, 0); } public TerminalNode FUNCTION() { return getToken(PSHDLLangParser.FUNCTION, 0); } public TerminalNode ANY_UINT() { return getToken(PSHDLLangParser.ANY_UINT, 0); } public TerminalNode UINT() { return getToken(PSHDLLangParser.UINT, 0); } public TerminalNode ENUM() { return getToken(PSHDLLangParser.ENUM, 0); } public PsFuncParamWithRWContext psFuncParamWithRW(int i) { return getRuleContext(PsFuncParamWithRWContext.class, i); } public TerminalNode ANY_BIT() { return getToken(PSHDLLangParser.ANY_BIT, 0); } public TerminalNode BIT() { return getToken(PSHDLLangParser.BIT, 0); } public PsFuncParamTypeContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psFuncParamType; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsFuncParamType(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsFuncParamType(this); } } } public final PsFuncParamTypeContext psFuncParamType() throws RecognitionException { final PsFuncParamTypeContext _localctx = new PsFuncParamTypeContext(_ctx, getState()); enterRule(_localctx, 62, RULE_psFuncParamType); int _la; try { setState(583); switch (_input.LA(1)) { case ANY_INT: enterOuterAlt(_localctx, 1); { setState(537); match(ANY_INT); } break; case ANY_UINT: enterOuterAlt(_localctx, 2); { setState(538); match(ANY_UINT); } break; case ANY_BIT: enterOuterAlt(_localctx, 3); { setState(539); match(ANY_BIT); } break; case ANY_IF: enterOuterAlt(_localctx, 4); { setState(540); match(ANY_IF); } break; case ANY_ENUM: enterOuterAlt(_localctx, 5); { setState(541); match(ANY_ENUM); } break; case BOOL: enterOuterAlt(_localctx, 6); { setState(542); match(BOOL); } break; case STRING: enterOuterAlt(_localctx, 7); { setState(543); match(STRING); } break; case BIT: enterOuterAlt(_localctx, 8); { { setState(544); match(BIT); setState(546); _la = _input.LA(1); if (_la == LESS) { { setState(545); psWidth(); } } } } break; case UINT: enterOuterAlt(_localctx, 9); { { setState(548); match(UINT); setState(550); _la = _input.LA(1); if (_la == LESS) { { setState(549); psWidth(); } } } } break; case INT: enterOuterAlt(_localctx, 10); { { setState(552); match(INT); setState(554); _la = _input.LA(1); if (_la == LESS) { { setState(553); psWidth(); } } } } break; case INTERFACE: enterOuterAlt(_localctx, 11); { { setState(556); match(INTERFACE); setState(557); match(LESS); setState(558); psQualifiedName(); setState(559); match(GREATER); } } break; case ENUM: enterOuterAlt(_localctx, 12); { { setState(561); match(ENUM); setState(562); match(LESS); setState(563); psQualifiedName(); setState(564); match(GREATER); } } break; case FUNCTION: enterOuterAlt(_localctx, 13); { { setState(566); match(FUNCTION); setState(567); match(LESS); setState(576); _la = _input.LA(1); if (((((_la) & ~0x3f) == 0) && (((1L << _la) & ((1L << 9) | (1L << MUL) | (1L << PLUS))) != 0)) || (((((_la - 75)) & ~0x3f) == 0) && (((1L << (_la - 75)) & ((1L << (ARITH_NEG - 75)) | (1L << (ANY_INT - 75)) | (1L << (ANY_UINT - 75)) | (1L << (ANY_BIT - 75)) | (1L << (ANY_IF - 75)) | (1L << (ANY_ENUM - 75)) | (1L << (BIT - 75)) | (1L << (INT - 75)) | (1L << (UINT - 75)) | (1L << (STRING - 75)) | (1L << (BOOL - 75)) | (1L << (ENUM - 75)) | (1L << (INTERFACE - 75)) | (1L << (FUNCTION - 75)))) != 0))) { { setState(568); psFuncParamWithRW(); setState(573); _errHandler.sync(this); _la = _input.LA(1); while (_la == 8) { { { setState(569); match(8); setState(570); psFuncParamWithRW(); } } setState(575); _errHandler.sync(this); _la = _input.LA(1); } } } setState(580); _la = _input.LA(1); if (_la == 37) { { setState(578); match(37); setState(579); _localctx.returnType = psFuncParamType(); } } setState(582); match(GREATER); } } break; default: throw new NoViableAltException(this); } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsFunctionContext extends ParserRuleContext { public TerminalNode RULE_ID() { return getToken(PSHDLLangParser.RULE_ID, 0); } public PsFunctionContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psFunction; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsFunction(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsFunction(this); } } } public final PsFunctionContext psFunction() throws RecognitionException { final PsFunctionContext _localctx = new PsFunctionContext(_ctx, getState()); enterRule(_localctx, 64, RULE_psFunction); try { enterOuterAlt(_localctx, 1); { setState(585); match(RULE_ID); } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsFuncArgsContext extends ParserRuleContext { public PsExpressionContext psExpression(int i) { return getRuleContext(PsExpressionContext.class, i); } public List<PsExpressionContext> psExpression() { return getRuleContexts(PsExpressionContext.class); } public PsFuncArgsContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psFuncArgs; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsFuncArgs(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsFuncArgs(this); } } } public final PsFuncArgsContext psFuncArgs() throws RecognitionException { final PsFuncArgsContext _localctx = new PsFuncArgsContext(_ctx, getState()); enterRule(_localctx, 66, RULE_psFuncArgs); int _la; try { enterOuterAlt(_localctx, 1); { setState(587); match(6); setState(596); _la = _input.LA(1); if (((((_la) & ~0x3f) == 0) && (((1L << _la) & ((1L << 3) | (1L << 6) | (1L << 25) | (1L << 34))) != 0)) || (((((_la - 75)) & ~0x3f) == 0) && (((1L << (_la - 75)) & ((1L << (ARITH_NEG - 75)) | (1L << (BIT_NEG - 75)) | (1L << (LOGIC_NEG - 75)) | (1L << (RULE_PS_LITERAL_TERMINAL - 75)) | (1L << (RULE_ID - 75)) | (1L << (RULE_STRING - 75)))) != 0))) { { setState(588); psExpression(0); setState(593); _errHandler.sync(this); _la = _input.LA(1); while (_la == 8) { { { setState(589); match(8); setState(590); psExpression(0); } } setState(595); _errHandler.sync(this); _la = _input.LA(1); } } } setState(598); match(40); } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsAssignmentOrFuncContext extends ParserRuleContext { public PsAssignmentOpContext psAssignmentOp() { return getRuleContext(PsAssignmentOpContext.class, 0); } public PsVariableRefContext psVariableRef() { return getRuleContext(PsVariableRefContext.class, 0); } public PsExpressionContext psExpression() { return getRuleContext(PsExpressionContext.class, 0); } public PsAssignmentOrFuncContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psAssignmentOrFunc; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsAssignmentOrFunc(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsAssignmentOrFunc(this); } } } public final PsAssignmentOrFuncContext psAssignmentOrFunc() throws RecognitionException { final PsAssignmentOrFuncContext _localctx = new PsAssignmentOrFuncContext(_ctx, getState()); enterRule(_localctx, 68, RULE_psAssignmentOrFunc); int _la; try { setState(616); switch (getInterpreter().adaptivePredict(_input, 73, _ctx)) { case 1: enterOuterAlt(_localctx, 1); { setState(600); psVariableRef(); setState(604); _la = _input.LA(1); if ((((((_la - 63)) & ~0x3f) == 0) && (((1L << (_la - 63)) & ((1L << (ASSGN - 63)) | (1L << (ADD_ASSGN - 63)) | (1L << (SUB_ASSGN - 63)) | (1L << (MUL_ASSGN - 63)) | (1L << (DIV_ASSGN - 63)) | (1L << (MOD_ASSGN - 63)) | (1L << (AND_ASSGN - 63)) | (1L << (XOR_ASSGN - 63)) | (1L << (OR_ASSGN - 63)) | (1L << (SLL_ASSGN - 63)) | (1L << (SRL_ASSGN - 63)) | (1L << (SRA_ASSGN - 63)))) != 0))) { { setState(601); psAssignmentOp(); setState(602); psExpression(0); } } setState(606); match(20); } break; case 2: enterOuterAlt(_localctx, 2); { setState(608); psVariableRef(); setState(612); _la = _input.LA(1); if ((((((_la - 63)) & ~0x3f) == 0) && (((1L << (_la - 63)) & ((1L << (ASSGN - 63)) | (1L << (ADD_ASSGN - 63)) | (1L << (SUB_ASSGN - 63)) | (1L << (MUL_ASSGN - 63)) | (1L << (DIV_ASSGN - 63)) | (1L << (MOD_ASSGN - 63)) | (1L << (AND_ASSGN - 63)) | (1L << (XOR_ASSGN - 63)) | (1L << (OR_ASSGN - 63)) | (1L << (SLL_ASSGN - 63)) | (1L << (SRL_ASSGN - 63)) | (1L << (SRA_ASSGN - 63)))) != 0))) { { setState(609); psAssignmentOp(); setState(610); psExpression(0); } } notifyErrorListeners(MISSING_SEMI); } break; } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsAssignmentOpContext extends ParserRuleContext { public PsAssignmentOpContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psAssignmentOp; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsAssignmentOp(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsAssignmentOp(this); } } } public final PsAssignmentOpContext psAssignmentOp() throws RecognitionException { final PsAssignmentOpContext _localctx = new PsAssignmentOpContext(_ctx, getState()); enterRule(_localctx, 70, RULE_psAssignmentOp); int _la; try { enterOuterAlt(_localctx, 1); { setState(618); _la = _input.LA(1); if (!((((((_la - 63)) & ~0x3f) == 0) && (((1L << (_la - 63)) & ((1L << (ASSGN - 63)) | (1L << (ADD_ASSGN - 63)) | (1L << (SUB_ASSGN - 63)) | (1L << (MUL_ASSGN - 63)) | (1L << (DIV_ASSGN - 63)) | (1L << (MOD_ASSGN - 63)) | (1L << (AND_ASSGN - 63)) | (1L << (XOR_ASSGN - 63)) | (1L << (OR_ASSGN - 63)) | (1L << (SLL_ASSGN - 63)) | (1L << (SRL_ASSGN - 63)) | (1L << (SRA_ASSGN - 63)))) != 0)))) { _errHandler.recoverInline(this); } consume(); } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsCompoundStatementContext extends ParserRuleContext { public PsForStatementContext psForStatement() { return getRuleContext(PsForStatementContext.class, 0); } public PsSwitchStatementContext psSwitchStatement() { return getRuleContext(PsSwitchStatementContext.class, 0); } public PsIfStatementContext psIfStatement() { return getRuleContext(PsIfStatementContext.class, 0); } public PsCompoundStatementContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psCompoundStatement; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsCompoundStatement(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsCompoundStatement(this); } } } public final PsCompoundStatementContext psCompoundStatement() throws RecognitionException { final PsCompoundStatementContext _localctx = new PsCompoundStatementContext(_ctx, getState()); enterRule(_localctx, 72, RULE_psCompoundStatement); try { setState(623); switch (_input.LA(1)) { case 23: enterOuterAlt(_localctx, 1); { setState(620); psIfStatement(); } break; case 4: enterOuterAlt(_localctx, 2); { setState(621); psForStatement(); } break; case 27: enterOuterAlt(_localctx, 3); { setState(622); psSwitchStatement(); } break; default: throw new NoViableAltException(this); } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsIfStatementContext extends ParserRuleContext { public PsSimpleBlockContext ifBlk; public PsSimpleBlockContext elseBlk; public List<PsSimpleBlockContext> psSimpleBlock() { return getRuleContexts(PsSimpleBlockContext.class); } public PsExpressionContext psExpression() { return getRuleContext(PsExpressionContext.class, 0); } public PsSimpleBlockContext psSimpleBlock(int i) { return getRuleContext(PsSimpleBlockContext.class, i); } public PsIfStatementContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psIfStatement; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsIfStatement(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsIfStatement(this); } } } public final PsIfStatementContext psIfStatement() throws RecognitionException { final PsIfStatementContext _localctx = new PsIfStatementContext(_ctx, getState()); enterRule(_localctx, 74, RULE_psIfStatement); try { setState(643); switch (getInterpreter().adaptivePredict(_input, 77, _ctx)) { case 1: enterOuterAlt(_localctx, 1); { setState(625); match(23); setState(626); match(6); setState(627); psExpression(0); setState(628); match(40); setState(629); _localctx.ifBlk = psSimpleBlock(); setState(632); switch (getInterpreter().adaptivePredict(_input, 75, _ctx)) { case 1: { setState(630); match(39); setState(631); _localctx.elseBlk = psSimpleBlock(); } break; } } break; case 2: enterOuterAlt(_localctx, 2); { setState(634); match(23); setState(635); psExpression(0); setState(636); _localctx.ifBlk = psSimpleBlock(); setState(639); switch (getInterpreter().adaptivePredict(_input, 76, _ctx)) { case 1: { setState(637); match(39); setState(638); _localctx.elseBlk = psSimpleBlock(); } break; } notifyErrorListeners(MISSING_IFPAREN); } break; } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsSimpleBlockContext extends ParserRuleContext { public List<PsBlockContext> psBlock() { return getRuleContexts(PsBlockContext.class); } public PsBlockContext psBlock(int i) { return getRuleContext(PsBlockContext.class, i); } public PsSimpleBlockContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psSimpleBlock; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsSimpleBlock(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsSimpleBlock(this); } } } public final PsSimpleBlockContext psSimpleBlock() throws RecognitionException { final PsSimpleBlockContext _localctx = new PsSimpleBlockContext(_ctx, getState()); enterRule(_localctx, 76, RULE_psSimpleBlock); int _la; try { setState(654); switch (getInterpreter().adaptivePredict(_input, 79, _ctx)) { case 1: enterOuterAlt(_localctx, 1); { setState(645); match(3); setState(649); _errHandler.sync(this); _la = _input.LA(1); while (((((_la) & ~0x3f) == 0) && (((1L << _la) & ((1L << 3) | (1L << 4) | (1L << 5) | (1L << 9) | (1L << 11) | (1L << 13) | (1L << 14) | (1L << 16) | (1L << 17) | (1L << 18) | (1L << 19) | (1L << 23) | (1L << 25) | (1L << 26) | (1L << 27) | (1L << 29) | (1L << 32) | (1L << 33) | (1L << 34) | (1L << 38))) != 0)) || (((((_la - 78)) & ~0x3f) == 0) && (((1L << (_la - 78)) & ((1L << (ANY_INT - 78)) | (1L << (ANY_UINT - 78)) | (1L << (ANY_BIT - 78)) | (1L << (BIT - 78)) | (1L << (INT - 78)) | (1L << (UINT - 78)) | (1L << (INT32 - 78)) | (1L << (UINT32 - 78)) | (1L << (STRING - 78)) | (1L << (BOOL - 78)) | (1L << (ENUM - 78)) | (1L << (INTERFACE - 78)) | (1L << (RULE_ID - 78)))) != 0))) { { { setState(646); psBlock(); } } setState(651); _errHandler.sync(this); _la = _input.LA(1); } setState(652); match(22); } break; case 2: enterOuterAlt(_localctx, 2); { setState(653); psBlock(); } break; } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsForStatementContext extends ParserRuleContext { public PsVariableContext psVariable() { return getRuleContext(PsVariableContext.class, 0); } public PsBitAccessContext psBitAccess() { return getRuleContext(PsBitAccessContext.class, 0); } public PsSimpleBlockContext psSimpleBlock() { return getRuleContext(PsSimpleBlockContext.class, 0); } public PsForStatementContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psForStatement; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsForStatement(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsForStatement(this); } } } public final PsForStatementContext psForStatement() throws RecognitionException { final PsForStatementContext _localctx = new PsForStatementContext(_ctx, getState()); enterRule(_localctx, 78, RULE_psForStatement); try { enterOuterAlt(_localctx, 1); { setState(656); match(4); setState(657); match(6); setState(658); psVariable(); setState(659); match(ASSGN); setState(660); psBitAccess(); setState(661); match(40); setState(662); psSimpleBlock(); } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsSwitchStatementContext extends ParserRuleContext { public PsCaseStatementsContext psCaseStatements(int i) { return getRuleContext(PsCaseStatementsContext.class, i); } public List<PsCaseStatementsContext> psCaseStatements() { return getRuleContexts(PsCaseStatementsContext.class); } public PsVariableRefContext psVariableRef() { return getRuleContext(PsVariableRefContext.class, 0); } public PsSwitchStatementContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psSwitchStatement; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsSwitchStatement(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsSwitchStatement(this); } } } public final PsSwitchStatementContext psSwitchStatement() throws RecognitionException { final PsSwitchStatementContext _localctx = new PsSwitchStatementContext(_ctx, getState()); enterRule(_localctx, 80, RULE_psSwitchStatement); int _la; try { enterOuterAlt(_localctx, 1); { setState(664); match(27); setState(665); match(6); setState(666); psVariableRef(); setState(667); match(40); setState(668); match(3); setState(672); _errHandler.sync(this); _la = _input.LA(1); while ((_la == 1) || (_la == 30)) { { { setState(669); psCaseStatements(); } } setState(674); _errHandler.sync(this); _la = _input.LA(1); } setState(675); match(22); } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsCaseStatementsContext extends ParserRuleContext { public PsValueContext psValue() { return getRuleContext(PsValueContext.class, 0); } public List<PsBlockContext> psBlock() { return getRuleContexts(PsBlockContext.class); } public PsBlockContext psBlock(int i) { return getRuleContext(PsBlockContext.class, i); } public PsCaseStatementsContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psCaseStatements; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsCaseStatements(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsCaseStatements(this); } } } public final PsCaseStatementsContext psCaseStatements() throws RecognitionException { final PsCaseStatementsContext _localctx = new PsCaseStatementsContext(_ctx, getState()); enterRule(_localctx, 82, RULE_psCaseStatements); int _la; try { enterOuterAlt(_localctx, 1); { setState(680); switch (_input.LA(1)) { case 30: { setState(677); match(30); setState(678); psValue(); } break; case 1: { setState(679); match(1); } break; default: throw new NoViableAltException(this); } setState(682); match(35); setState(686); _errHandler.sync(this); _la = _input.LA(1); while (((((_la) & ~0x3f) == 0) && (((1L << _la) & ((1L << 3) | (1L << 4) | (1L << 5) | (1L << 9) | (1L << 11) | (1L << 13) | (1L << 14) | (1L << 16) | (1L << 17) | (1L << 18) | (1L << 19) | (1L << 23) | (1L << 25) | (1L << 26) | (1L << 27) | (1L << 29) | (1L << 32) | (1L << 33) | (1L << 34) | (1L << 38))) != 0)) || (((((_la - 78)) & ~0x3f) == 0) && (((1L << (_la - 78)) & ((1L << (ANY_INT - 78)) | (1L << (ANY_UINT - 78)) | (1L << (ANY_BIT - 78)) | (1L << (BIT - 78)) | (1L << (INT - 78)) | (1L << (UINT - 78)) | (1L << (INT32 - 78)) | (1L << (UINT32 - 78)) | (1L << (STRING - 78)) | (1L << (BOOL - 78)) | (1L << (ENUM - 78)) | (1L << (INTERFACE - 78)) | (1L << (RULE_ID - 78)))) != 0))) { { { setState(683); psBlock(); } } setState(688); _errHandler.sync(this); _la = _input.LA(1); } } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsDeclarationContext extends ParserRuleContext { public PsAnnotationContext psAnnotation(int i) { return getRuleContext(PsAnnotationContext.class, i); } public PsDeclarationTypeContext psDeclarationType() { return getRuleContext(PsDeclarationTypeContext.class, 0); } public List<PsAnnotationContext> psAnnotation() { return getRuleContexts(PsAnnotationContext.class); } public PsDeclarationContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psDeclaration; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsDeclaration(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsDeclaration(this); } } } public final PsDeclarationContext psDeclaration() throws RecognitionException { final PsDeclarationContext _localctx = new PsDeclarationContext(_ctx, getState()); enterRule(_localctx, 84, RULE_psDeclaration); int _la; try { enterOuterAlt(_localctx, 1); { setState(692); _errHandler.sync(this); _la = _input.LA(1); while (_la == 11) { { { setState(689); psAnnotation(); } } setState(694); _errHandler.sync(this); _la = _input.LA(1); } setState(695); psDeclarationType(); setState(697); _la = _input.LA(1); if (_la == 20) { { setState(696); match(20); } } } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsDeclarationTypeContext extends ParserRuleContext { public PsTypeDeclarationContext psTypeDeclaration() { return getRuleContext(PsTypeDeclarationContext.class, 0); } public PsFunctionDeclarationContext psFunctionDeclaration() { return getRuleContext(PsFunctionDeclarationContext.class, 0); } public PsVariableDeclarationContext psVariableDeclaration() { return getRuleContext(PsVariableDeclarationContext.class, 0); } public PsDeclarationTypeContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psDeclarationType; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsDeclarationType(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsDeclarationType(this); } } } public final PsDeclarationTypeContext psDeclarationType() throws RecognitionException { final PsDeclarationTypeContext _localctx = new PsDeclarationTypeContext(_ctx, getState()); enterRule(_localctx, 86, RULE_psDeclarationType); try { setState(702); switch (getInterpreter().adaptivePredict(_input, 85, _ctx)) { case 1: enterOuterAlt(_localctx, 1); { setState(699); psVariableDeclaration(); } break; case 2: enterOuterAlt(_localctx, 2); { setState(700); psTypeDeclaration(); } break; case 3: enterOuterAlt(_localctx, 3); { setState(701); psFunctionDeclaration(); } break; } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsTypeDeclarationContext extends ParserRuleContext { public PsInterfaceDeclarationContext psInterfaceDeclaration() { return getRuleContext(PsInterfaceDeclarationContext.class, 0); } public PsEnumDeclarationContext psEnumDeclaration() { return getRuleContext(PsEnumDeclarationContext.class, 0); } public PsTypeDeclarationContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psTypeDeclaration; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsTypeDeclaration(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsTypeDeclaration(this); } } } public final PsTypeDeclarationContext psTypeDeclaration() throws RecognitionException { final PsTypeDeclarationContext _localctx = new PsTypeDeclarationContext(_ctx, getState()); enterRule(_localctx, 88, RULE_psTypeDeclaration); try { setState(706); switch (_input.LA(1)) { case INTERFACE: enterOuterAlt(_localctx, 1); { setState(704); psInterfaceDeclaration(); } break; case ENUM: enterOuterAlt(_localctx, 2); { setState(705); psEnumDeclaration(); } break; default: throw new NoViableAltException(this); } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsEnumDeclarationContext extends ParserRuleContext { public Token hasAss; public PsEnumContext psEnum() { return getRuleContext(PsEnumContext.class, 0); } public List<PsVariableContext> psVariable() { return getRuleContexts(PsVariableContext.class); } public PsVariableContext psVariable(int i) { return getRuleContext(PsVariableContext.class, i); } public PsEnumDeclarationContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psEnumDeclaration; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsEnumDeclaration(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsEnumDeclaration(this); } } } public final PsEnumDeclarationContext psEnumDeclaration() throws RecognitionException { final PsEnumDeclarationContext _localctx = new PsEnumDeclarationContext(_ctx, getState()); enterRule(_localctx, 90, RULE_psEnumDeclaration); int _la; try { enterOuterAlt(_localctx, 1); { setState(708); match(ENUM); setState(709); psEnum(); setState(711); _la = _input.LA(1); if (_la == ASSGN) { { setState(710); _localctx.hasAss = match(ASSGN); } } setState(713); match(3); setState(714); psVariable(); setState(719); _errHandler.sync(this); _la = _input.LA(1); while (_la == 8) { { { setState(715); match(8); setState(716); psVariable(); } } setState(721); _errHandler.sync(this); _la = _input.LA(1); } setState(722); match(22); } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsEnumContext extends ParserRuleContext { public PsQualifiedNameContext psQualifiedName() { return getRuleContext(PsQualifiedNameContext.class, 0); } public PsEnumContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psEnum; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsEnum(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsEnum(this); } } } public final PsEnumContext psEnum() throws RecognitionException { final PsEnumContext _localctx = new PsEnumContext(_ctx, getState()); enterRule(_localctx, 92, RULE_psEnum); try { enterOuterAlt(_localctx, 1); { setState(724); psQualifiedName(); } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsVariableDeclarationContext extends ParserRuleContext { public PsDeclAssignmentContext psDeclAssignment(int i) { return getRuleContext(PsDeclAssignmentContext.class, i); } public PsDirectionContext psDirection() { return getRuleContext(PsDirectionContext.class, 0); } public List<PsDeclAssignmentContext> psDeclAssignment() { return getRuleContexts(PsDeclAssignmentContext.class); } public PsPrimitiveContext psPrimitive() { return getRuleContext(PsPrimitiveContext.class, 0); } public PsVariableDeclarationContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psVariableDeclaration; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsVariableDeclaration(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsVariableDeclaration(this); } } } public final PsVariableDeclarationContext psVariableDeclaration() throws RecognitionException { final PsVariableDeclarationContext _localctx = new PsVariableDeclarationContext(_ctx, getState()); enterRule(_localctx, 94, RULE_psVariableDeclaration); int _la; try { setState(780); switch (getInterpreter().adaptivePredict(_input, 95, _ctx)) { case 1: enterOuterAlt(_localctx, 1); { setState(727); _la = _input.LA(1); if (((((_la) & ~0x3f) == 0) && (((1L << _la) & ((1L << 9) | (1L << 26) | (1L << 29) | (1L << 32) | (1L << 38))) != 0))) { { setState(726); psDirection(); } } setState(729); psPrimitive(); setState(730); psDeclAssignment(); setState(735); _errHandler.sync(this); _la = _input.LA(1); while (_la == 8) { { { setState(731); match(8); setState(732); psDeclAssignment(); } } setState(737); _errHandler.sync(this); _la = _input.LA(1); } setState(738); match(20); } break; case 2: enterOuterAlt(_localctx, 2); { setState(740); psDirection(); setState(741); psDeclAssignment(); setState(746); _errHandler.sync(this); _la = _input.LA(1); while (_la == 8) { { { setState(742); match(8); setState(743); psDeclAssignment(); } } setState(748); _errHandler.sync(this); _la = _input.LA(1); } notifyErrorListeners(MISSING_TYPE); setState(750); match(20); } break; case 3: enterOuterAlt(_localctx, 3); { setState(752); psPrimitive(); setState(753); psDirection(); setState(754); psDeclAssignment(); setState(759); _errHandler.sync(this); _la = _input.LA(1); while (_la == 8) { { { setState(755); match(8); setState(756); psDeclAssignment(); } } setState(761); _errHandler.sync(this); _la = _input.LA(1); } notifyErrorListeners(WRONG_ORDER); setState(763); match(20); } break; case 4: enterOuterAlt(_localctx, 4); { setState(766); _la = _input.LA(1); if (((((_la) & ~0x3f) == 0) && (((1L << _la) & ((1L << 9) | (1L << 26) | (1L << 29) | (1L << 32) | (1L << 38))) != 0))) { { setState(765); psDirection(); } } setState(768); psPrimitive(); setState(769); psDeclAssignment(); setState(774); _errHandler.sync(this); _la = _input.LA(1); while (_la == 8) { { { setState(770); match(8); setState(771); psDeclAssignment(); } } setState(776); _errHandler.sync(this); _la = _input.LA(1); } notifyErrorListeners(MISSING_SEMI); setState(778); match(20); } break; } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsDeclAssignmentContext extends ParserRuleContext { public PsAnnotationContext psAnnotation(int i) { return getRuleContext(PsAnnotationContext.class, i); } public PsVariableContext psVariable() { return getRuleContext(PsVariableContext.class, 0); } public PsArrayContext psArray() { return getRuleContext(PsArrayContext.class, 0); } public PsArrayInitContext psArrayInit() { return getRuleContext(PsArrayInitContext.class, 0); } public List<PsAnnotationContext> psAnnotation() { return getRuleContexts(PsAnnotationContext.class); } public PsDeclAssignmentContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psDeclAssignment; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsDeclAssignment(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsDeclAssignment(this); } } } public final PsDeclAssignmentContext psDeclAssignment() throws RecognitionException { final PsDeclAssignmentContext _localctx = new PsDeclAssignmentContext(_ctx, getState()); enterRule(_localctx, 96, RULE_psDeclAssignment); int _la; try { enterOuterAlt(_localctx, 1); { setState(785); _errHandler.sync(this); _la = _input.LA(1); while (_la == 11) { { { setState(782); psAnnotation(); } } setState(787); _errHandler.sync(this); _la = _input.LA(1); } setState(788); psVariable(); setState(790); _la = _input.LA(1); if (_la == 36) { { setState(789); psArray(); } } setState(794); _la = _input.LA(1); if (_la == ASSGN) { { setState(792); match(ASSGN); setState(793); psArrayInit(); } } } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsArrayInitContext extends ParserRuleContext { public PsArrayInitSubParensContext psArrayInitSubParens() { return getRuleContext(PsArrayInitSubParensContext.class, 0); } public PsExpressionContext psExpression() { return getRuleContext(PsExpressionContext.class, 0); } public PsArrayInitContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psArrayInit; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsArrayInit(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsArrayInit(this); } } } public final PsArrayInitContext psArrayInit() throws RecognitionException { final PsArrayInitContext _localctx = new PsArrayInitContext(_ctx, getState()); enterRule(_localctx, 98, RULE_psArrayInit); try { setState(798); switch (getInterpreter().adaptivePredict(_input, 99, _ctx)) { case 1: enterOuterAlt(_localctx, 1); { setState(796); psExpression(0); } break; case 2: enterOuterAlt(_localctx, 2); { setState(797); psArrayInitSubParens(); } break; } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsArrayInitSubParensContext extends ParserRuleContext { public PsArrayInitSubContext psArrayInitSub() { return getRuleContext(PsArrayInitSubContext.class, 0); } public PsArrayInitSubParensContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psArrayInitSubParens; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsArrayInitSubParens(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsArrayInitSubParens(this); } } } public final PsArrayInitSubParensContext psArrayInitSubParens() throws RecognitionException { final PsArrayInitSubParensContext _localctx = new PsArrayInitSubParensContext(_ctx, getState()); enterRule(_localctx, 100, RULE_psArrayInitSubParens); try { enterOuterAlt(_localctx, 1); { setState(800); match(3); setState(801); psArrayInitSub(); setState(802); match(22); } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsArrayInitSubContext extends ParserRuleContext { public PsExpressionContext psExpression(int i) { return getRuleContext(PsExpressionContext.class, i); } public PsArrayInitSubParensContext psArrayInitSubParens() { return getRuleContext(PsArrayInitSubParensContext.class, 0); } public List<PsExpressionContext> psExpression() { return getRuleContexts(PsExpressionContext.class); } public PsArrayInitSubContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psArrayInitSub; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsArrayInitSub(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsArrayInitSub(this); } } } public final PsArrayInitSubContext psArrayInitSub() throws RecognitionException { final PsArrayInitSubContext _localctx = new PsArrayInitSubContext(_ctx, getState()); enterRule(_localctx, 102, RULE_psArrayInitSub); int _la; try { setState(813); switch (getInterpreter().adaptivePredict(_input, 101, _ctx)) { case 1: enterOuterAlt(_localctx, 1); { setState(804); psExpression(0); setState(809); _errHandler.sync(this); _la = _input.LA(1); while (_la == 8) { { { setState(805); match(8); setState(806); psExpression(0); } } setState(811); _errHandler.sync(this); _la = _input.LA(1); } } break; case 2: enterOuterAlt(_localctx, 2); { setState(812); psArrayInitSubParens(); } break; } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsArrayContext extends ParserRuleContext { public PsExpressionContext psExpression(int i) { return getRuleContext(PsExpressionContext.class, i); } public List<PsExpressionContext> psExpression() { return getRuleContexts(PsExpressionContext.class); } public PsArrayContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psArray; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsArray(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsArray(this); } } } public final PsArrayContext psArray() throws RecognitionException { final PsArrayContext _localctx = new PsArrayContext(_ctx, getState()); enterRule(_localctx, 104, RULE_psArray); try { int _alt; enterOuterAlt(_localctx, 1); { setState(819); _errHandler.sync(this); _alt = 1; do { switch (_alt) { case 1: { { setState(815); match(36); setState(816); psExpression(0); setState(817); match(10); } } break; default: throw new NoViableAltException(this); } setState(821); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input, 102, _ctx); } while ((_alt != 2) && (_alt != ATN.INVALID_ALT_NUMBER)); } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsDirectionContext extends ParserRuleContext { public PsDirectionContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psDirection; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsDirection(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsDirection(this); } } } public final PsDirectionContext psDirection() throws RecognitionException { final PsDirectionContext _localctx = new PsDirectionContext(_ctx, getState()); enterRule(_localctx, 106, RULE_psDirection); int _la; try { enterOuterAlt(_localctx, 1); { setState(823); _la = _input.LA(1); if (!(((((_la) & ~0x3f) == 0) && (((1L << _la) & ((1L << 9) | (1L << 26) | (1L << 29) | (1L << 32) | (1L << 38))) != 0)))) { _errHandler.recoverInline(this); } consume(); } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsAnnotationContext extends ParserRuleContext { public TerminalNode RULE_STRING() { return getToken(PSHDLLangParser.RULE_STRING, 0); } public PsAnnotationTypeContext psAnnotationType() { return getRuleContext(PsAnnotationTypeContext.class, 0); } public PsAnnotationContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psAnnotation; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsAnnotation(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsAnnotation(this); } } } public final PsAnnotationContext psAnnotation() throws RecognitionException { final PsAnnotationContext _localctx = new PsAnnotationContext(_ctx, getState()); enterRule(_localctx, 108, RULE_psAnnotation); int _la; try { enterOuterAlt(_localctx, 1); { setState(825); psAnnotationType(); setState(829); _la = _input.LA(1); if (_la == 6) { { setState(826); match(6); setState(827); match(RULE_STRING); setState(828); match(40); } } } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsAnnotationTypeContext extends ParserRuleContext { public TerminalNode RULE_ID() { return getToken(PSHDLLangParser.RULE_ID, 0); } public PsAnnotationTypeContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psAnnotationType; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsAnnotationType(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsAnnotationType(this); } } } public final PsAnnotationTypeContext psAnnotationType() throws RecognitionException { final PsAnnotationTypeContext _localctx = new PsAnnotationTypeContext(_ctx, getState()); enterRule(_localctx, 110, RULE_psAnnotationType); try { enterOuterAlt(_localctx, 1); { setState(831); match(11); setState(832); match(RULE_ID); } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsPrimitiveContext extends ParserRuleContext { public Token isRegister; public Token isEnum; public Token isRecord; public PsPassedArgumentsContext psPassedArguments() { return getRuleContext(PsPassedArgumentsContext.class, 0); } public PsPrimitiveTypeContext psPrimitiveType() { return getRuleContext(PsPrimitiveTypeContext.class, 0); } public PsQualifiedNameContext psQualifiedName() { return getRuleContext(PsQualifiedNameContext.class, 0); } public PsWidthContext psWidth() { return getRuleContext(PsWidthContext.class, 0); } public PsPrimitiveContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psPrimitive; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsPrimitive(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsPrimitive(this); } } } public final PsPrimitiveContext psPrimitive() throws RecognitionException { final PsPrimitiveContext _localctx = new PsPrimitiveContext(_ctx, getState()); enterRule(_localctx, 112, RULE_psPrimitive); int _la; try { setState(868); switch (getInterpreter().adaptivePredict(_input, 113, _ctx)) { case 1: enterOuterAlt(_localctx, 1); { setState(838); _la = _input.LA(1); if (_la == 14) { { setState(834); _localctx.isRegister = match(14); setState(836); _la = _input.LA(1); if (_la == 6) { { setState(835); psPassedArguments(); } } } } setState(849); switch (_input.LA(1)) { case ANY_INT: case ANY_UINT: case ANY_BIT: case BIT: case INT: case UINT: case INT32: case UINT32: case STRING: case BOOL: { setState(840); psPrimitiveType(); setState(842); _la = _input.LA(1); if (_la == LESS) { { setState(841); psWidth(); } } } break; case 18: case ENUM: { setState(846); switch (_input.LA(1)) { case ENUM: { setState(844); _localctx.isEnum = match(ENUM); } break; case 18: { setState(845); _localctx.isRecord = match(18); } break; default: throw new NoViableAltException(this); } setState(848); psQualifiedName(); } break; default: throw new NoViableAltException(this); } } break; case 2: enterOuterAlt(_localctx, 2); { setState(860); switch (_input.LA(1)) { case ANY_INT: case ANY_UINT: case ANY_BIT: case BIT: case INT: case UINT: case INT32: case UINT32: case STRING: case BOOL: { setState(851); psPrimitiveType(); setState(853); _la = _input.LA(1); if (_la == LESS) { { setState(852); psWidth(); } } } break; case 18: case ENUM: { setState(857); switch (_input.LA(1)) { case ENUM: { setState(855); _localctx.isEnum = match(ENUM); } break; case 18: { setState(856); _localctx.isRecord = match(18); } break; default: throw new NoViableAltException(this); } setState(859); psQualifiedName(); } break; default: throw new NoViableAltException(this); } { setState(862); _localctx.isRegister = match(14); setState(864); _la = _input.LA(1); if (_la == 6) { { setState(863); psPassedArguments(); } } } notifyErrorListeners(WRONG_ORDER); } break; } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsPrimitiveTypeContext extends ParserRuleContext { public TerminalNode ANY_UINT() { return getToken(PSHDLLangParser.ANY_UINT, 0); } public TerminalNode ANY_BIT() { return getToken(PSHDLLangParser.ANY_BIT, 0); } public TerminalNode ANY_INT() { return getToken(PSHDLLangParser.ANY_INT, 0); } public PsPrimitiveTypeContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psPrimitiveType; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsPrimitiveType(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsPrimitiveType(this); } } } public final PsPrimitiveTypeContext psPrimitiveType() throws RecognitionException { final PsPrimitiveTypeContext _localctx = new PsPrimitiveTypeContext(_ctx, getState()); enterRule(_localctx, 114, RULE_psPrimitiveType); int _la; try { enterOuterAlt(_localctx, 1); { setState(870); _la = _input.LA(1); if (!((((((_la - 78)) & ~0x3f) == 0) && (((1L << (_la - 78)) & ((1L << (ANY_INT - 78)) | (1L << (ANY_UINT - 78)) | (1L << (ANY_BIT - 78)) | (1L << (BIT - 78)) | (1L << (INT - 78)) | (1L << (UINT - 78)) | (1L << (INT32 - 78)) | (1L << (UINT32 - 78)) | (1L << (STRING - 78)) | (1L << (BOOL - 78)))) != 0)))) { _errHandler.recoverInline(this); } consume(); } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsWidthContext extends ParserRuleContext { public PsExpressionContext psExpression() { return getRuleContext(PsExpressionContext.class, 0); } public PsWidthContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psWidth; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsWidth(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsWidth(this); } } } public final PsWidthContext psWidth() throws RecognitionException { final PsWidthContext _localctx = new PsWidthContext(_ctx, getState()); enterRule(_localctx, 116, RULE_psWidth); try { enterOuterAlt(_localctx, 1); { setState(872); match(LESS); setState(873); psExpression(0); setState(874); match(GREATER); } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsInterfaceDeclarationContext extends ParserRuleContext { public PsInterfaceContext psInterface() { return getRuleContext(PsInterfaceContext.class, 0); } public PsInterfaceDeclContext psInterfaceDecl() { return getRuleContext(PsInterfaceDeclContext.class, 0); } public PsInterfaceExtendsContext psInterfaceExtends() { return getRuleContext(PsInterfaceExtendsContext.class, 0); } public PsInterfaceDeclarationContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psInterfaceDeclaration; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsInterfaceDeclaration(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsInterfaceDeclaration(this); } } } public final PsInterfaceDeclarationContext psInterfaceDeclaration() throws RecognitionException { final PsInterfaceDeclarationContext _localctx = new PsInterfaceDeclarationContext(_ctx, getState()); enterRule(_localctx, 118, RULE_psInterfaceDeclaration); int _la; try { enterOuterAlt(_localctx, 1); { setState(876); match(INTERFACE); setState(877); psInterface(); setState(880); _la = _input.LA(1); if (_la == 21) { { setState(878); match(21); setState(879); psInterfaceExtends(); } } setState(882); psInterfaceDecl(); } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsInterfaceContext extends ParserRuleContext { public PsQualifiedNameContext psQualifiedName() { return getRuleContext(PsQualifiedNameContext.class, 0); } public PsInterfaceContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psInterface; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsInterface(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsInterface(this); } } } public final PsInterfaceContext psInterface() throws RecognitionException { final PsInterfaceContext _localctx = new PsInterfaceContext(_ctx, getState()); enterRule(_localctx, 120, RULE_psInterface); try { enterOuterAlt(_localctx, 1); { setState(884); psQualifiedName(); } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsInterfaceExtendsContext extends ParserRuleContext { public PsQualifiedNameContext psQualifiedName(int i) { return getRuleContext(PsQualifiedNameContext.class, i); } public List<PsQualifiedNameContext> psQualifiedName() { return getRuleContexts(PsQualifiedNameContext.class); } public PsInterfaceExtendsContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psInterfaceExtends; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsInterfaceExtends(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsInterfaceExtends(this); } } } public final PsInterfaceExtendsContext psInterfaceExtends() throws RecognitionException { final PsInterfaceExtendsContext _localctx = new PsInterfaceExtendsContext(_ctx, getState()); enterRule(_localctx, 122, RULE_psInterfaceExtends); int _la; try { enterOuterAlt(_localctx, 1); { setState(886); psQualifiedName(); setState(891); _errHandler.sync(this); _la = _input.LA(1); while (_la == 8) { { { setState(887); match(8); setState(888); psQualifiedName(); } } setState(893); _errHandler.sync(this); _la = _input.LA(1); } } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsInterfaceDeclContext extends ParserRuleContext { public List<PsPortDeclarationContext> psPortDeclaration() { return getRuleContexts(PsPortDeclarationContext.class); } public PsPortDeclarationContext psPortDeclaration(int i) { return getRuleContext(PsPortDeclarationContext.class, i); } public PsInterfaceDeclContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psInterfaceDecl; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsInterfaceDecl(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsInterfaceDecl(this); } } } public final PsInterfaceDeclContext psInterfaceDecl() throws RecognitionException { final PsInterfaceDeclContext _localctx = new PsInterfaceDeclContext(_ctx, getState()); enterRule(_localctx, 124, RULE_psInterfaceDecl); int _la; try { enterOuterAlt(_localctx, 1); { setState(894); match(3); setState(898); _errHandler.sync(this); _la = _input.LA(1); while (((((_la) & ~0x3f) == 0) && (((1L << _la) & ((1L << 9) | (1L << 11) | (1L << 14) | (1L << 18) | (1L << 26) | (1L << 29) | (1L << 32) | (1L << 38))) != 0)) || (((((_la - 78)) & ~0x3f) == 0) && (((1L << (_la - 78)) & ((1L << (ANY_INT - 78)) | (1L << (ANY_UINT - 78)) | (1L << (ANY_BIT - 78)) | (1L << (BIT - 78)) | (1L << (INT - 78)) | (1L << (UINT - 78)) | (1L << (INT32 - 78)) | (1L << (UINT32 - 78)) | (1L << (STRING - 78)) | (1L << (BOOL - 78)) | (1L << (ENUM - 78)))) != 0))) { { { setState(895); psPortDeclaration(); } } setState(900); _errHandler.sync(this); _la = _input.LA(1); } setState(901); match(22); } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsPortDeclarationContext extends ParserRuleContext { public PsAnnotationContext psAnnotation(int i) { return getRuleContext(PsAnnotationContext.class, i); } public PsVariableDeclarationContext psVariableDeclaration() { return getRuleContext(PsVariableDeclarationContext.class, 0); } public List<PsAnnotationContext> psAnnotation() { return getRuleContexts(PsAnnotationContext.class); } public PsPortDeclarationContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psPortDeclaration; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsPortDeclaration(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsPortDeclaration(this); } } } public final PsPortDeclarationContext psPortDeclaration() throws RecognitionException { final PsPortDeclarationContext _localctx = new PsPortDeclarationContext(_ctx, getState()); enterRule(_localctx, 126, RULE_psPortDeclaration); int _la; try { enterOuterAlt(_localctx, 1); { setState(906); _errHandler.sync(this); _la = _input.LA(1); while (_la == 11) { { { setState(903); psAnnotation(); } } setState(908); _errHandler.sync(this); _la = _input.LA(1); } setState(909); psVariableDeclaration(); } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } public static class PsQualifiedNameContext extends ParserRuleContext { public TerminalNode RULE_ID(int i) { return getToken(PSHDLLangParser.RULE_ID, i); } public List<TerminalNode> RULE_ID() { return getTokens(PSHDLLangParser.RULE_ID); } public PsQualifiedNameContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @Override public int getRuleIndex() { return RULE_psQualifiedName; } @Override public void enterRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).enterPsQualifiedName(this); } } @Override public void exitRule(ParseTreeListener listener) { if (listener instanceof PSHDLLangListener) { ((PSHDLLangListener) listener).exitPsQualifiedName(this); } } } public final PsQualifiedNameContext psQualifiedName() throws RecognitionException { final PsQualifiedNameContext _localctx = new PsQualifiedNameContext(_ctx, getState()); enterRule(_localctx, 128, RULE_psQualifiedName); int _la; try { enterOuterAlt(_localctx, 1); { setState(911); match(RULE_ID); setState(916); _errHandler.sync(this); _la = _input.LA(1); while (_la == 28) { { { setState(912); match(28); setState(913); match(RULE_ID); } } setState(918); _errHandler.sync(this); _la = _input.LA(1); } } } catch (final RecognitionException re) { _localctx.exception = re; _errHandler.reportError(this, re); _errHandler.recover(this, re); } finally { exitRule(); } return _localctx; } @Override public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) { switch (ruleIndex) { case 13: return psExpression_sempred((PsExpressionContext) _localctx, predIndex); } return true; } private boolean psExpression_sempred(PsExpressionContext _localctx, int predIndex) { switch (predIndex) { case 0: return precpred(_ctx, 15); case 1: return precpred(_ctx, 14); case 2: return precpred(_ctx, 13); case 3: return precpred(_ctx, 12); case 4: return precpred(_ctx, 11); case 5: return precpred(_ctx, 10); case 6: return precpred(_ctx, 9); case 7: return precpred(_ctx, 8); case 8: return precpred(_ctx, 7); case 9: return precpred(_ctx, 6); case 10: return precpred(_ctx, 5); case 11: return precpred(_ctx, 4); } return true; } public static final String _serializedATN = "\3\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd\3g\u039a\4\2\t\2\4" + "\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t" + "\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22" + "\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31\t\31" + "\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36\4\37\t\37\4 \t \4!" + "\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4" + ",\t,\4-\t-\4.\t.\4/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64\t" + "\64\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:\4;\t;\4<\t<\4=\t=" + "\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\3\2\3\2\3\2\3\2\5\2\u0089\n\2\3\2\3\2\7" + "\2\u008d\n\2\f\2\16\2\u0090\13\2\3\3\7\3\u0093\n\3\f\3\16\3\u0096\13\3" + "\3\3\3\3\3\3\5\3\u009b\n\3\3\3\3\3\7\3\u009f\n\3\f\3\16\3\u00a2\13\3\3" + "\3\7\3\u00a5\n\3\f\3\16\3\u00a8\13\3\3\3\3\3\3\3\7\3\u00ad\n\3\f\3\16" + "\3\u00b0\13\3\3\3\3\3\5\3\u00b4\n\3\3\3\3\3\7\3\u00b8\n\3\f\3\16\3\u00bb" + "\13\3\3\3\7\3\u00be\n\3\f\3\16\3\u00c1\13\3\3\3\3\3\5\3\u00c5\n\3\3\4" + "\3\4\3\4\3\4\7\4\u00cb\n\4\f\4\16\4\u00ce\13\4\3\5\3\5\3\5\3\5\3\5\3\5" + "\3\5\3\5\5\5\u00d8\n\5\3\6\3\6\5\6\u00dc\n\6\3\7\3\7\3\7\5\7\u00e1\n\7" + "\3\7\3\7\7\7\u00e5\n\7\f\7\16\7\u00e8\13\7\3\7\5\7\u00eb\n\7\3\b\3\b\3" + "\b\7\b\u00f0\n\b\f\b\16\b\u00f3\13\b\3\b\3\b\3\t\7\t\u00f8\n\t\f\t\16" + "\t\u00fb\13\t\3\t\3\t\5\t\u00ff\n\t\3\n\3\n\3\n\5\n\u0104\n\n\3\n\5\n" + "\u0107\n\n\3\n\3\n\3\n\3\n\3\n\5\n\u010e\n\n\3\n\5\n\u0111\n\n\3\n\3\n" + "\5\n\u0115\n\n\3\13\5\13\u0118\n\13\3\13\3\13\3\13\3\13\3\13\3\13\5\13" + "\u0120\n\13\3\13\5\13\u0123\n\13\3\13\3\13\3\13\5\13\u0128\n\13\3\13\3" + "\13\3\13\3\13\3\13\3\13\5\13\u0130\n\13\3\13\5\13\u0133\n\13\3\13\3\13" + "\5\13\u0137\n\13\3\f\3\f\3\f\3\f\7\f\u013d\n\f\f\f\16\f\u0140\13\f\5\f" + "\u0142\n\f\3\f\3\f\3\r\3\r\3\r\3\r\3\16\3\16\3\16\5\16\u014d\n\16\3\16" + "\3\16\3\17\3\17\3\17\3\17\3\17\5\17\u0156\n\17\3\17\3\17\3\17\3\17\3\17" + "\3\17\3\17\5\17\u015f\n\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17" + "\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17" + "\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17" + "\3\17\3\17\7\17\u0188\n\17\f\17\16\17\u018b\13\17\3\20\3\20\3\20\5\20" + "\u0190\n\20\3\21\3\21\3\21\3\21\7\21\u0196\n\21\f\21\16\21\u0199\13\21" + "\3\21\3\21\3\22\3\22\3\22\3\22\3\22\3\22\3\22\5\22\u01a4\n\22\3\23\3\23" + "\3\23\7\23\u01a9\n\23\f\23\16\23\u01ac\13\23\3\23\3\23\5\23\u01b0\n\23" + "\3\24\3\24\5\24\u01b4\n\24\3\24\5\24\u01b7\n\24\3\24\5\24\u01ba\n\24\3" + "\25\3\25\3\26\3\26\3\26\5\26\u01c1\n\26\3\27\3\27\3\27\5\27\u01c6\n\27" + "\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\31\3\31\3\31\5\31" + "\u01d5\n\31\3\31\3\31\3\31\3\31\7\31\u01db\n\31\f\31\16\31\u01de\13\31" + "\3\31\3\31\3\32\5\32\u01e3\n\32\3\32\3\32\3\32\5\32\u01e8\n\32\3\32\3" + "\32\3\32\3\32\3\33\3\33\7\33\u01f0\n\33\f\33\16\33\u01f3\13\33\3\34\3" + "\34\3\34\3\34\7\34\u01f9\n\34\f\34\16\34\u01fc\13\34\5\34\u01fe\n\34\3" + "\34\3\34\3\35\3\35\3\35\7\35\u0205\n\35\f\35\16\35\u0208\13\35\3\36\5" + "\36\u020b\n\36\3\36\5\36\u020e\n\36\5\36\u0210\n\36\3\36\3\36\3\37\3\37" + "\5\37\u0216\n\37\3\37\3\37\3 \3 \3!\3!\3!\3!\3!\3!\3!\3!\3!\5!\u0225\n" + "!\3!\3!\5!\u0229\n!\3!\3!\5!\u022d\n!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3" + "!\3!\3!\3!\3!\7!\u023e\n!\f!\16!\u0241\13!\5!\u0243\n!\3!\3!\5!\u0247" + "\n!\3!\5!\u024a\n!\3\"\3\"\3#\3#\3#\3#\7#\u0252\n#\f#\16#\u0255\13#\5" + "#\u0257\n#\3#\3#\3$\3$\3$\3$\5$\u025f\n$\3$\3$\3$\3$\3$\3$\5$\u0267\n" + "$\3$\3$\5$\u026b\n$\3%\3%\3&\3&\3&\5&\u0272\n&\3\'\3\'\3\'\3\'\3\'\3\'" + "\3\'\5\'\u027b\n\'\3\'\3\'\3\'\3\'\3\'\5\'\u0282\n\'\3\'\3\'\5\'\u0286" + "\n\'\3(\3(\7(\u028a\n(\f(\16(\u028d\13(\3(\3(\5(\u0291\n(\3)\3)\3)\3)" + "\3)\3)\3)\3)\3*\3*\3*\3*\3*\3*\7*\u02a1\n*\f*\16*\u02a4\13*\3*\3*\3+\3" + "+\3+\5+\u02ab\n+\3+\3+\7+\u02af\n+\f+\16+\u02b2\13+\3,\7,\u02b5\n,\f," + "\16,\u02b8\13,\3,\3,\5,\u02bc\n,\3-\3-\3-\5-\u02c1\n-\3.\3.\5.\u02c5\n" + ".\3/\3/\3/\5/\u02ca\n/\3/\3/\3/\3/\7/\u02d0\n/\f/\16/\u02d3\13/\3/\3/" + "\3\60\3\60\3\61\5\61\u02da\n\61\3\61\3\61\3\61\3\61\7\61\u02e0\n\61\f" + "\61\16\61\u02e3\13\61\3\61\3\61\3\61\3\61\3\61\3\61\7\61\u02eb\n\61\f" + "\61\16\61\u02ee\13\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\7\61\u02f8" + "\n\61\f\61\16\61\u02fb\13\61\3\61\3\61\3\61\3\61\5\61\u0301\n\61\3\61" + "\3\61\3\61\3\61\7\61\u0307\n\61\f\61\16\61\u030a\13\61\3\61\3\61\3\61" + "\5\61\u030f\n\61\3\62\7\62\u0312\n\62\f\62\16\62\u0315\13\62\3\62\3\62" + "\5\62\u0319\n\62\3\62\3\62\5\62\u031d\n\62\3\63\3\63\5\63\u0321\n\63\3" + "\64\3\64\3\64\3\64\3\65\3\65\3\65\7\65\u032a\n\65\f\65\16\65\u032d\13" + "\65\3\65\5\65\u0330\n\65\3\66\3\66\3\66\3\66\6\66\u0336\n\66\r\66\16\66" + "\u0337\3\67\3\67\38\38\38\38\58\u0340\n8\39\39\39\3:\3:\5:\u0347\n:\5" + ":\u0349\n:\3:\3:\5:\u034d\n:\3:\3:\5:\u0351\n:\3:\5:\u0354\n:\3:\3:\5" + ":\u0358\n:\3:\3:\5:\u035c\n:\3:\5:\u035f\n:\3:\3:\5:\u0363\n:\3:\3:\5" + ":\u0367\n:\3;\3;\3<\3<\3<\3<\3=\3=\3=\3=\5=\u0373\n=\3=\3=\3>\3>\3?\3" + "?\3?\7?\u037c\n?\f?\16?\u037f\13?\3@\3@\7@\u0383\n@\f@\16@\u0386\13@\3" + "@\3@\3A\7A\u038b\nA\fA\16A\u038e\13A\3A\3A\3B\3B\3B\7B\u0395\nB\fB\16" + "B\u0398\13B\3B\2\3\34C\2\4\6\b\n\f\16\20\22\24\26\30\32\34\36 \"$&(*," + ".\60\62\64\668:<>@BDFHJLNPRTVXZ\\^`bdfhjlnprtvxz|~\u0080\u0082\2\f\3\2" + "_`\4\2\63\64\66\67\4\2\65\65MM\3\28:\3\2=@\3\2;<\5\2\63\63\65\65MM\3\2" + "AL\7\2\13\13\34\34\37\37\"\"((\4\2PRU[\u03f3\2\u0088\3\2\2\2\4\u00c4\3" + "\2\2\2\6\u00c6\3\2\2\2\b\u00d7\3\2\2\2\n\u00d9\3\2\2\2\f\u00ea\3\2\2\2" + "\16\u00ec\3\2\2\2\20\u00f9\3\2\2\2\22\u0114\3\2\2\2\24\u0136\3\2\2\2\26" + "\u0138\3\2\2\2\30\u0145\3\2\2\2\32\u0149\3\2\2\2\34\u015e\3\2\2\2\36\u018f" + "\3\2\2\2 \u0191\3\2\2\2\"\u019c\3\2\2\2$\u01af\3\2\2\2&\u01b1\3\2\2\2" + "(\u01bb\3\2\2\2*\u01c0\3\2\2\2,\u01c5\3\2\2\2.\u01c7\3\2\2\2\60\u01d1" + "\3\2\2\2\62\u01e2\3\2\2\2\64\u01ed\3\2\2\2\66\u01f4\3\2\2\28\u0201\3\2" + "\2\2:\u020f\3\2\2\2<\u0213\3\2\2\2>\u0219\3\2\2\2@\u0249\3\2\2\2B\u024b" + "\3\2\2\2D\u024d\3\2\2\2F\u026a\3\2\2\2H\u026c\3\2\2\2J\u0271\3\2\2\2L" + "\u0285\3\2\2\2N\u0290\3\2\2\2P\u0292\3\2\2\2R\u029a\3\2\2\2T\u02aa\3\2" + "\2\2V\u02b6\3\2\2\2X\u02c0\3\2\2\2Z\u02c4\3\2\2\2\\\u02c6\3\2\2\2^\u02d6" + "\3\2\2\2`\u030e\3\2\2\2b\u0313\3\2\2\2d\u0320\3\2\2\2f\u0322\3\2\2\2h" + "\u032f\3\2\2\2j\u0335\3\2\2\2l\u0339\3\2\2\2n\u033b\3\2\2\2p\u0341\3\2" + "\2\2r\u0366\3\2\2\2t\u0368\3\2\2\2v\u036a\3\2\2\2x\u036e\3\2\2\2z\u0376" + "\3\2\2\2|\u0378\3\2\2\2~\u0380\3\2\2\2\u0080\u038c\3\2\2\2\u0082\u0391" + "\3\2\2\2\u0084\u0085\7\t\2\2\u0085\u0086\5\u0082B\2\u0086\u0087\7\26\2" + "\2\u0087\u0089\3\2\2\2\u0088\u0084\3\2\2\2\u0088\u0089\3\2\2\2\u0089\u008e" + "\3\2\2\2\u008a\u008d\5\4\3\2\u008b\u008d\5V,\2\u008c\u008a\3\2\2\2\u008c" + "\u008b\3\2\2\2\u008d\u0090\3\2\2\2\u008e\u008c\3\2\2\2\u008e\u008f\3\2" + "\2\2\u008f\3\3\2\2\2\u0090\u008e\3\2\2\2\u0091\u0093\5n8\2\u0092\u0091" + "\3\2\2\2\u0093\u0096\3\2\2\2\u0094\u0092\3\2\2\2\u0094\u0095\3\2\2\2\u0095" + "\u0097\3\2\2\2\u0096\u0094\3\2\2\2\u0097\u0098\t\2\2\2\u0098\u009a\5z" + ">\2\u0099\u009b\5\6\4\2\u009a\u0099\3\2\2\2\u009a\u009b\3\2\2\2\u009b" + "\u009c\3\2\2\2\u009c\u00a0\7\5\2\2\u009d\u009f\5\b\5\2\u009e\u009d\3\2" + "\2\2\u009f\u00a2\3\2\2\2\u00a0\u009e\3\2\2\2\u00a0\u00a1\3\2\2\2\u00a1" + "\u00a6\3\2\2\2\u00a2\u00a0\3\2\2\2\u00a3\u00a5\5\f\7\2\u00a4\u00a3\3\2" + "\2\2\u00a5\u00a8\3\2\2\2\u00a6\u00a4\3\2\2\2\u00a6\u00a7\3\2\2\2\u00a7" + "\u00a9\3\2\2\2\u00a8\u00a6\3\2\2\2\u00a9\u00aa\7\30\2\2\u00aa\u00c5\3" + "\2\2\2\u00ab\u00ad\5n8\2\u00ac\u00ab\3\2\2\2\u00ad\u00b0\3\2\2\2\u00ae" + "\u00ac\3\2\2\2\u00ae\u00af\3\2\2\2\u00af\u00b1\3\2\2\2\u00b0\u00ae\3\2" + "\2\2\u00b1\u00b3\t\2\2\2\u00b2\u00b4\5\6\4\2\u00b3\u00b2\3\2\2\2\u00b3" + "\u00b4\3\2\2\2\u00b4\u00b5\3\2\2\2\u00b5\u00b9\7\5\2\2\u00b6\u00b8\5\b" + "\5\2\u00b7\u00b6\3\2\2\2\u00b8\u00bb\3\2\2\2\u00b9\u00b7\3\2\2\2\u00b9" + "\u00ba\3\2\2\2\u00ba\u00bf\3\2\2\2\u00bb\u00b9\3\2\2\2\u00bc\u00be\5\f" + "\7\2\u00bd\u00bc\3\2\2\2\u00be\u00c1\3\2\2\2\u00bf\u00bd\3\2\2\2\u00bf" + "\u00c0\3\2\2\2\u00c0\u00c2\3\2\2\2\u00c1\u00bf\3\2\2\2\u00c2\u00c3\7\30" + "\2\2\u00c3\u00c5\b\3\1\2\u00c4\u0094\3\2\2\2\u00c4\u00ae\3\2\2\2\u00c5" + "\5\3\2\2\2\u00c6\u00c7\7\27\2\2\u00c7\u00cc\5\u0082B\2\u00c8\u00c9\7\n" + "\2\2\u00c9\u00cb\5\u0082B\2\u00ca\u00c8\3\2\2\2\u00cb\u00ce\3\2\2\2\u00cc" + "\u00ca\3\2\2\2\u00cc\u00cd\3\2\2\2\u00cd\7\3\2\2\2\u00ce\u00cc\3\2\2\2" + "\u00cf\u00d0\7-\2\2\u00d0\u00d1\5\n\6\2\u00d1\u00d2\7\26\2\2\u00d2\u00d8" + "\3\2\2\2\u00d3\u00d4\7-\2\2\u00d4\u00d5\5\n\6\2\u00d5\u00d6\b\5\1\2\u00d6" + "\u00d8\3\2\2\2\u00d7\u00cf\3\2\2\2\u00d7\u00d3\3\2\2\2\u00d8\t\3\2\2\2" + "\u00d9\u00db\5\u0082B\2\u00da\u00dc\7\4\2\2\u00db\u00da\3\2\2\2\u00db" + "\u00dc\3\2\2\2\u00dc\13\3\2\2\2\u00dd\u00e1\5V,\2\u00de\u00e1\5\20\t\2" + "\u00df\u00e1\5*\26\2\u00e0\u00dd\3\2\2\2\u00e0\u00de\3\2\2\2\u00e0\u00df" + "\3\2\2\2\u00e1\u00eb\3\2\2\2\u00e2\u00e6\7\5\2\2\u00e3\u00e5\5\f\7\2\u00e4" + "\u00e3\3\2\2\2\u00e5\u00e8\3\2\2\2\u00e6\u00e4\3\2\2\2\u00e6\u00e7\3\2" + "\2\2\u00e7\u00e9\3\2\2\2\u00e8\u00e6\3\2\2\2\u00e9\u00eb\7\30\2\2\u00ea" + "\u00e0\3\2\2\2\u00ea\u00e2\3\2\2\2\u00eb\r\3\2\2\2\u00ec\u00ed\7\23\2" + "\2\u00ed\u00f1\7\5\2\2\u00ee\u00f0\5\f\7\2\u00ef\u00ee\3\2\2\2\u00f0\u00f3" + "\3\2\2\2\u00f1\u00ef\3\2\2\2\u00f1\u00f2\3\2\2\2\u00f2\u00f4\3\2\2\2\u00f3" + "\u00f1\3\2\2\2\u00f4\u00f5\7\30\2\2\u00f5\17\3\2\2\2\u00f6\u00f8\5n8\2" + "\u00f7\u00f6\3\2\2\2\u00f8\u00fb\3\2\2\2\u00f9\u00f7\3\2\2\2\u00f9\u00fa" + "\3\2\2\2\u00fa\u00fe\3\2\2\2\u00fb\u00f9\3\2\2\2\u00fc\u00ff\5\22\n\2" + "\u00fd\u00ff\5\24\13\2\u00fe\u00fc\3\2\2\2\u00fe\u00fd\3\2\2\2\u00ff\21" + "\3\2\2\2\u0100\u0101\5\u0082B\2\u0101\u0103\5(\25\2\u0102\u0104\5j\66" + "\2\u0103\u0102\3\2\2\2\u0103\u0104\3\2\2\2\u0104\u0106\3\2\2\2\u0105\u0107" + "\5\26\f\2\u0106\u0105\3\2\2\2\u0106\u0107\3\2\2\2\u0107\u0108\3\2\2\2" + "\u0108\u0109\7\26\2\2\u0109\u0115\3\2\2\2\u010a\u010b\5\u0082B\2\u010b" + "\u010d\5(\25\2\u010c\u010e\5j\66\2\u010d\u010c\3\2\2\2\u010d\u010e\3\2" + "\2\2\u010e\u0110\3\2\2\2\u010f\u0111\5\26\f\2\u0110\u010f\3\2\2\2\u0110" + "\u0111\3\2\2\2\u0111\u0112\3\2\2\2\u0112\u0113\b\n\1\2\u0113\u0115\3\2" + "\2\2\u0114\u0100\3\2\2\2\u0114\u010a\3\2\2\2\u0115\23\3\2\2\2\u0116\u0118" + "\7\7\2\2\u0117\u0116\3\2\2\2\u0117\u0118\3\2\2\2\u0118\u0119\3\2\2\2\u0119" + "\u011a\5z>\2\u011a\u011b\5(\25\2\u011b\u011c\7A\2\2\u011c\u011d\7\21\2" + "\2\u011d\u011f\7b\2\2\u011e\u0120\5\26\f\2\u011f\u011e\3\2\2\2\u011f\u0120" + "\3\2\2\2\u0120\u0122\3\2\2\2\u0121\u0123\7e\2\2\u0122\u0121\3\2\2\2\u0122" + "\u0123\3\2\2\2\u0123\u0124\3\2\2\2\u0124\u0125\7\26\2\2\u0125\u0137\3" + "\2\2\2\u0126\u0128\7\7\2\2\u0127\u0126\3\2\2\2\u0127\u0128\3\2\2\2\u0128" + "\u0129\3\2\2\2\u0129\u012a\5z>\2\u012a\u012b\5(\25\2\u012b\u012c\7A\2" + "\2\u012c\u012d\7\21\2\2\u012d\u012f\7b\2\2\u012e\u0130\5\26\f\2\u012f" + "\u012e\3\2\2\2\u012f\u0130\3\2\2\2\u0130\u0132\3\2\2\2\u0131\u0133\7e" + "\2\2\u0132\u0131\3\2\2\2\u0132\u0133\3\2\2\2\u0133\u0134\3\2\2\2\u0134" + "\u0135\b\13\1\2\u0135\u0137\3\2\2\2\u0136\u0117\3\2\2\2\u0136\u0127\3" + "\2\2\2\u0137\25\3\2\2\2\u0138\u0141\7\b\2\2\u0139\u013e\5\30\r\2\u013a" + "\u013b\7\n\2\2\u013b\u013d\5\30\r\2\u013c\u013a\3\2\2\2\u013d\u0140\3" + "\2\2\2\u013e\u013c\3\2\2\2\u013e\u013f\3\2\2\2\u013f\u0142\3\2\2\2\u0140" + "\u013e\3\2\2\2\u0141\u0139\3\2\2\2\u0141\u0142\3\2\2\2\u0142\u0143\3\2" + "\2\2\u0143\u0144\7*\2\2\u0144\27\3\2\2\2\u0145\u0146\7b\2\2\u0146\u0147" + "\7A\2\2\u0147\u0148\5\34\17\2\u0148\31\3\2\2\2\u0149\u014a\7\b\2\2\u014a" + "\u014c\5t;\2\u014b\u014d\5v<\2\u014c\u014b\3\2\2\2\u014c\u014d\3\2\2\2" + "\u014d\u014e\3\2\2\2\u014e\u014f\7*\2\2\u014f\33\3\2\2\2\u0150\u0155\b" + "\17\1\2\u0151\u0156\5\32\16\2\u0152\u0156\7O\2\2\u0153\u0156\7N\2\2\u0154" + "\u0156\7M\2\2\u0155\u0151\3\2\2\2\u0155\u0152\3\2\2\2\u0155\u0153\3\2" + "\2\2\u0155\u0154\3\2\2\2\u0156\u0157\3\2\2\2\u0157\u015f\5\34\17\22\u0158" + "\u015f\5\36\20\2\u0159\u015f\5f\64\2\u015a\u015b\7\b\2\2\u015b\u015c\5" + "\34\17\2\u015c\u015d\7*\2\2\u015d\u015f\3\2\2\2\u015e\u0150\3\2\2\2\u015e" + "\u0158\3\2\2\2\u015e\u0159\3\2\2\2\u015e\u015a\3\2\2\2\u015f\u0189\3\2" + "\2\2\u0160\u0161\f\21\2\2\u0161\u0162\t\3\2\2\u0162\u0188\5\34\17\22\u0163" + "\u0164\f\20\2\2\u0164\u0165\t\4\2\2\u0165\u0188\5\34\17\21\u0166\u0167" + "\f\17\2\2\u0167\u0168\t\5\2\2\u0168\u0188\5\34\17\20\u0169\u016a\f\16" + "\2\2\u016a\u016b\t\6\2\2\u016b\u0188\5\34\17\17\u016c\u016d\f\r\2\2\u016d" + "\u016e\t\7\2\2\u016e\u0188\5\34\17\16\u016f\u0170\f\f\2\2\u0170\u0171" + "\7.\2\2\u0171\u0188\5\34\17\r\u0172\u0173\f\13\2\2\u0173\u0174\7\60\2" + "\2\u0174\u0188\5\34\17\13\u0175\u0176\f\n\2\2\u0176\u0177\7/\2\2\u0177" + "\u0188\5\34\17\13\u0178\u0179\f\t\2\2\u0179\u017a\7\16\2\2\u017a\u0188" + "\5\34\17\n\u017b\u017c\f\b\2\2\u017c\u017d\7\61\2\2\u017d\u0188\5\34\17" + "\t\u017e\u017f\f\7\2\2\u017f\u0180\7\62\2\2\u0180\u0188\5\34\17\b\u0181" + "\u0182\f\6\2\2\u0182\u0183\7\32\2\2\u0183\u0184\5\34\17\2\u0184\u0185" + "\7%\2\2\u0185\u0186\5\34\17\7\u0186\u0188\3\2\2\2\u0187\u0160\3\2\2\2" + "\u0187\u0163\3\2\2\2\u0187\u0166\3\2\2\2\u0187\u0169\3\2\2\2\u0187\u016c" + "\3\2\2\2\u0187\u016f\3\2\2\2\u0187\u0172\3\2\2\2\u0187\u0175\3\2\2\2\u0187" + "\u0178\3\2\2\2\u0187\u017b\3\2\2\2\u0187\u017e\3\2\2\2\u0187\u0181\3\2" + "\2\2\u0188\u018b\3\2\2\2\u0189\u0187\3\2\2\2\u0189\u018a\3\2\2\2\u018a" + "\35\3\2\2\2\u018b\u0189\3\2\2\2\u018c\u0190\7a\2\2\u018d\u0190\5$\23\2" + "\u018e\u0190\7c\2\2\u018f\u018c\3\2\2\2\u018f\u018d\3\2\2\2\u018f\u018e" + "\3\2\2\2\u0190\37\3\2\2\2\u0191\u0192\7\5\2\2\u0192\u0197\5\"\22\2\u0193" + "\u0194\7\n\2\2\u0194\u0196\5\"\22\2\u0195\u0193\3\2\2\2\u0196\u0199\3" + "\2\2\2\u0197\u0195\3\2\2\2\u0197\u0198\3\2\2\2\u0198\u019a\3\2\2\2\u0199" + "\u0197\3\2\2\2\u019a\u019b\7\30\2\2\u019b!\3\2\2\2\u019c\u01a3\5\34\17" + "\2\u019d\u019e\7%\2\2\u019e\u01a4\5\34\17\2\u019f\u01a0\7+\2\2\u01a0\u01a4" + "\5\34\17\2\u01a1\u01a2\7,\2\2\u01a2\u01a4\5\34\17\2\u01a3\u019d\3\2\2" + "\2\u01a3\u019f\3\2\2\2\u01a3\u01a1\3\2\2\2\u01a3\u01a4\3\2\2\2\u01a4#" + "\3\2\2\2\u01a5\u01aa\5&\24\2\u01a6\u01a7\7\36\2\2\u01a7\u01a9\5&\24\2" + "\u01a8\u01a6\3\2\2\2\u01a9\u01ac\3\2\2\2\u01aa\u01a8\3\2\2\2\u01aa\u01ab" + "\3\2\2\2\u01ab\u01b0\3\2\2\2\u01ac\u01aa\3\2\2\2\u01ad\u01b0\7$\2\2\u01ae" + "\u01b0\7\33\2\2\u01af\u01a5\3\2\2\2\u01af\u01ad\3\2\2\2\u01af\u01ae\3" + "\2\2\2\u01b0%\3\2\2\2\u01b1\u01b9\7b\2\2\u01b2\u01b4\5j\66\2\u01b3\u01b2" + "\3\2\2\2\u01b3\u01b4\3\2\2\2\u01b4\u01b6\3\2\2\2\u01b5\u01b7\5 \21\2\u01b6" + "\u01b5\3\2\2\2\u01b6\u01b7\3\2\2\2\u01b7\u01ba\3\2\2\2\u01b8\u01ba\5D" + "#\2\u01b9\u01b3\3\2\2\2\u01b9\u01b8\3\2\2\2\u01ba\'\3\2\2\2\u01bb\u01bc" + "\7b\2\2\u01bc)\3\2\2\2\u01bd\u01c1\5J&\2\u01be\u01c1\5\16\b\2\u01bf\u01c1" + "\5F$\2\u01c0\u01bd\3\2\2\2\u01c0\u01be\3\2\2\2\u01c0\u01bf\3\2\2\2\u01c1" + "+\3\2\2\2\u01c2\u01c6\5\62\32\2\u01c3\u01c6\5.\30\2\u01c4\u01c6\5\60\31" + "\2\u01c5\u01c2\3\2\2\2\u01c5\u01c3\3\2\2\2\u01c5\u01c4\3\2\2\2\u01c6-" + "\3\2\2\2\u01c7\u01c8\7\25\2\2\u01c8\u01c9\7^\2\2\u01c9\u01ca\5\64\33\2" + "\u01ca\u01cb\5B\"\2\u01cb\u01cc\5\66\34\2\u01cc\u01cd\7!\2\2\u01cd\u01ce" + "\7\b\2\2\u01ce\u01cf\5\34\17\2\u01cf\u01d0\7*\2\2\u01d0/\3\2\2\2\u01d1" + "\u01d2\7#\2\2\u01d2\u01d4\7^\2\2\u01d3\u01d5\5\64\33\2\u01d4\u01d3\3\2" + "\2\2\u01d4\u01d5\3\2\2\2\u01d5\u01d6\3\2\2\2\u01d6\u01d7\5B\"\2\u01d7" + "\u01d8\5\66\34\2\u01d8\u01dc\7\5\2\2\u01d9\u01db\5*\26\2\u01da\u01d9\3" + "\2\2\2\u01db\u01de\3\2\2\2\u01dc\u01da\3\2\2\2\u01dc\u01dd\3\2\2\2\u01dd" + "\u01df\3\2\2\2\u01de\u01dc\3\2\2\2\u01df\u01e0\7\30\2\2\u01e0\61\3\2\2" + "\2\u01e1\u01e3\7\17\2\2\u01e2\u01e1\3\2\2\2\u01e2\u01e3\3\2\2\2\u01e3" + "\u01e4\3\2\2\2\u01e4\u01e5\7\22\2\2\u01e5\u01e7\7^\2\2\u01e6\u01e8\5\64" + "\33\2\u01e7\u01e6\3\2\2\2\u01e7\u01e8\3\2\2\2\u01e8\u01e9\3\2\2\2\u01e9" + "\u01ea\5B\"\2\u01ea\u01eb\5\66\34\2\u01eb\u01ec\7\26\2\2\u01ec\63\3\2" + "\2\2\u01ed\u01f1\5@!\2\u01ee\u01f0\5<\37\2\u01ef\u01ee\3\2\2\2\u01f0\u01f3" + "\3\2\2\2\u01f1\u01ef\3\2\2\2\u01f1\u01f2\3\2\2\2\u01f2\65\3\2\2\2\u01f3" + "\u01f1\3\2\2\2\u01f4\u01fd\7\b\2\2\u01f5\u01fa\58\35\2\u01f6\u01f7\7\n" + "\2\2\u01f7\u01f9\58\35\2\u01f8\u01f6\3\2\2\2\u01f9\u01fc\3\2\2\2\u01fa" + "\u01f8\3\2\2\2\u01fa\u01fb\3\2\2\2\u01fb\u01fe\3\2\2\2\u01fc\u01fa\3\2" + "\2\2\u01fd\u01f5\3\2\2\2\u01fd\u01fe\3\2\2\2\u01fe\u01ff\3\2\2\2\u01ff" + "\u0200\7*\2\2\u0200\67\3\2\2\2\u0201\u0202\5:\36\2\u0202\u0206\7b\2\2" + "\u0203\u0205\5<\37\2\u0204\u0203\3\2\2\2\u0205\u0208\3\2\2\2\u0206\u0204" + "\3\2\2\2\u0206\u0207\3\2\2\2\u02079\3\2\2\2\u0208\u0206\3\2\2\2\u0209" + "\u020b\5> \2\u020a\u0209\3\2\2\2\u020a\u020b\3\2\2\2\u020b\u0210\3\2\2" + "\2\u020c\u020e\7\13\2\2\u020d\u020c\3\2\2\2\u020d\u020e\3\2\2\2\u020e" + "\u0210\3\2\2\2\u020f\u020a\3\2\2\2\u020f\u020d\3\2\2\2\u0210\u0211\3\2" + "\2\2\u0211\u0212\5@!\2\u0212;\3\2\2\2\u0213\u0215\7&\2\2\u0214\u0216\5" + "\34\17\2\u0215\u0214\3\2\2\2\u0215\u0216\3\2\2\2\u0216\u0217\3\2\2\2\u0217" + "\u0218\7\f\2\2\u0218=\3\2\2\2\u0219\u021a\t\b\2\2\u021a?\3\2\2\2\u021b" + "\u024a\7P\2\2\u021c\u024a\7Q\2\2\u021d\u024a\7R\2\2\u021e\u024a\7S\2\2" + "\u021f\u024a\7T\2\2\u0220\u024a\7[\2\2\u0221\u024a\7Z\2\2\u0222\u0224" + "\7U\2\2\u0223\u0225\5v<\2\u0224\u0223\3\2\2\2\u0224\u0225\3\2\2\2\u0225" + "\u024a\3\2\2\2\u0226\u0228\7W\2\2\u0227\u0229\5v<\2\u0228\u0227\3\2\2" + "\2\u0228\u0229\3\2\2\2\u0229\u024a\3\2\2\2\u022a\u022c\7V\2\2\u022b\u022d" + "\5v<\2\u022c\u022b\3\2\2\2\u022c\u022d\3\2\2\2\u022d\u024a\3\2\2\2\u022e" + "\u022f\7]\2\2\u022f\u0230\7=\2\2\u0230\u0231\5\u0082B\2\u0231\u0232\7" + "?\2\2\u0232\u024a\3\2\2\2\u0233\u0234\7\\\2\2\u0234\u0235\7=\2\2\u0235" + "\u0236\5\u0082B\2\u0236\u0237\7?\2\2\u0237\u024a\3\2\2\2\u0238\u0239\7" + "^\2\2\u0239\u0242\7=\2\2\u023a\u023f\5:\36\2\u023b\u023c\7\n\2\2\u023c" + "\u023e\5:\36\2\u023d\u023b\3\2\2\2\u023e\u0241\3\2\2\2\u023f\u023d\3\2" + "\2\2\u023f\u0240\3\2\2\2\u0240\u0243\3\2\2\2\u0241\u023f\3\2\2\2\u0242" + "\u023a\3\2\2\2\u0242\u0243\3\2\2\2\u0243\u0246\3\2\2\2\u0244\u0245\7\'" + "\2\2\u0245\u0247\5@!\2\u0246\u0244\3\2\2\2\u0246\u0247\3\2\2\2\u0247\u0248" + "\3\2\2\2\u0248\u024a\7?\2\2\u0249\u021b\3\2\2\2\u0249\u021c\3\2\2\2\u0249" + "\u021d\3\2\2\2\u0249\u021e\3\2\2\2\u0249\u021f\3\2\2\2\u0249\u0220\3\2" + "\2\2\u0249\u0221\3\2\2\2\u0249\u0222\3\2\2\2\u0249\u0226\3\2\2\2\u0249" + "\u022a\3\2\2\2\u0249\u022e\3\2\2\2\u0249\u0233\3\2\2\2\u0249\u0238\3\2" + "\2\2\u024aA\3\2\2\2\u024b\u024c\7b\2\2\u024cC\3\2\2\2\u024d\u0256\7\b" + "\2\2\u024e\u0253\5\34\17\2\u024f\u0250\7\n\2\2\u0250\u0252\5\34\17\2\u0251" + "\u024f\3\2\2\2\u0252\u0255\3\2\2\2\u0253\u0251\3\2\2\2\u0253\u0254\3\2" + "\2\2\u0254\u0257\3\2\2\2\u0255\u0253\3\2\2\2\u0256\u024e\3\2\2\2\u0256" + "\u0257\3\2\2\2\u0257\u0258\3\2\2\2\u0258\u0259\7*\2\2\u0259E\3\2\2\2\u025a" + "\u025e\5$\23\2\u025b\u025c\5H%\2\u025c\u025d\5\34\17\2\u025d\u025f\3\2" + "\2\2\u025e\u025b\3\2\2\2\u025e\u025f\3\2\2\2\u025f\u0260\3\2\2\2\u0260" + "\u0261\7\26\2\2\u0261\u026b\3\2\2\2\u0262\u0266\5$\23\2\u0263\u0264\5" + "H%\2\u0264\u0265\5\34\17\2\u0265\u0267\3\2\2\2\u0266\u0263\3\2\2\2\u0266" + "\u0267\3\2\2\2\u0267\u0268\3\2\2\2\u0268\u0269\b$\1\2\u0269\u026b\3\2" + "\2\2\u026a\u025a\3\2\2\2\u026a\u0262\3\2\2\2\u026bG\3\2\2\2\u026c\u026d" + "\t\t\2\2\u026dI\3\2\2\2\u026e\u0272\5L\'\2\u026f\u0272\5P)\2\u0270\u0272" + "\5R*\2\u0271\u026e\3\2\2\2\u0271\u026f\3\2\2\2\u0271\u0270\3\2\2\2\u0272" + "K\3\2\2\2\u0273\u0274\7\31\2\2\u0274\u0275\7\b\2\2\u0275\u0276\5\34\17" + "\2\u0276\u0277\7*\2\2\u0277\u027a\5N(\2\u0278\u0279\7)\2\2\u0279\u027b" + "\5N(\2\u027a\u0278\3\2\2\2\u027a\u027b\3\2\2\2\u027b\u0286\3\2\2\2\u027c" + "\u027d\7\31\2\2\u027d\u027e\5\34\17\2\u027e\u0281\5N(\2\u027f\u0280\7" + ")\2\2\u0280\u0282\5N(\2\u0281\u027f\3\2\2\2\u0281\u0282\3\2\2\2\u0282" + "\u0283\3\2\2\2\u0283\u0284\b\'\1\2\u0284\u0286\3\2\2\2\u0285\u0273\3\2" + "\2\2\u0285\u027c\3\2\2\2\u0286M\3\2\2\2\u0287\u028b\7\5\2\2\u0288\u028a" + "\5\f\7\2\u0289\u0288\3\2\2\2\u028a\u028d\3\2\2\2\u028b\u0289\3\2\2\2\u028b" + "\u028c\3\2\2\2\u028c\u028e\3\2\2\2\u028d\u028b\3\2\2\2\u028e\u0291\7\30" + "\2\2\u028f\u0291\5\f\7\2\u0290\u0287\3\2\2\2\u0290\u028f\3\2\2\2\u0291" + "O\3\2\2\2\u0292\u0293\7\6\2\2\u0293\u0294\7\b\2\2\u0294\u0295\5(\25\2" + "\u0295\u0296\7A\2\2\u0296\u0297\5 \21\2\u0297\u0298\7*\2\2\u0298\u0299" + "\5N(\2\u0299Q\3\2\2\2\u029a\u029b\7\35\2\2\u029b\u029c\7\b\2\2\u029c\u029d" + "\5$\23\2\u029d\u029e\7*\2\2\u029e\u02a2\7\5\2\2\u029f\u02a1\5T+\2\u02a0" + "\u029f\3\2\2\2\u02a1\u02a4\3\2\2\2\u02a2\u02a0\3\2\2\2\u02a2\u02a3\3\2" + "\2\2\u02a3\u02a5\3\2\2\2\u02a4\u02a2\3\2\2\2\u02a5\u02a6\7\30\2\2\u02a6" + "S\3\2\2\2\u02a7\u02a8\7 \2\2\u02a8\u02ab\5\36\20\2\u02a9\u02ab\7\3\2\2" + "\u02aa\u02a7\3\2\2\2\u02aa\u02a9\3\2\2\2\u02ab\u02ac\3\2\2\2\u02ac\u02b0" + "\7%\2\2\u02ad\u02af\5\f\7\2\u02ae\u02ad\3\2\2\2\u02af\u02b2\3\2\2\2\u02b0" + "\u02ae\3\2\2\2\u02b0\u02b1\3\2\2\2\u02b1U\3\2\2\2\u02b2\u02b0\3\2\2\2" + "\u02b3\u02b5\5n8\2\u02b4\u02b3\3\2\2\2\u02b5\u02b8\3\2\2\2\u02b6\u02b4" + "\3\2\2\2\u02b6\u02b7\3\2\2\2\u02b7\u02b9\3\2\2\2\u02b8\u02b6\3\2\2\2\u02b9" + "\u02bb\5X-\2\u02ba\u02bc\7\26\2\2\u02bb\u02ba\3\2\2\2\u02bb\u02bc\3\2" + "\2\2\u02bcW\3\2\2\2\u02bd\u02c1\5`\61\2\u02be\u02c1\5Z.\2\u02bf\u02c1" + "\5,\27\2\u02c0\u02bd\3\2\2\2\u02c0\u02be\3\2\2\2\u02c0\u02bf\3\2\2\2\u02c1" + "Y\3\2\2\2\u02c2\u02c5\5x=\2\u02c3\u02c5\5\\/\2\u02c4\u02c2\3\2\2\2\u02c4" + "\u02c3\3\2\2\2\u02c5[\3\2\2\2\u02c6\u02c7\7\\\2\2\u02c7\u02c9\5^\60\2" + "\u02c8\u02ca\7A\2\2\u02c9\u02c8\3\2\2\2\u02c9\u02ca\3\2\2\2\u02ca\u02cb" + "\3\2\2\2\u02cb\u02cc\7\5\2\2\u02cc\u02d1\5(\25\2\u02cd\u02ce\7\n\2\2\u02ce" + "\u02d0\5(\25\2\u02cf\u02cd\3\2\2\2\u02d0\u02d3\3\2\2\2\u02d1\u02cf\3\2" + "\2\2\u02d1\u02d2\3\2\2\2\u02d2\u02d4\3\2\2\2\u02d3\u02d1\3\2\2\2\u02d4" + "\u02d5\7\30\2\2\u02d5]\3\2\2\2\u02d6\u02d7\5\u0082B\2\u02d7_\3\2\2\2\u02d8" + "\u02da\5l\67\2\u02d9\u02d8\3\2\2\2\u02d9\u02da\3\2\2\2\u02da\u02db\3\2" + "\2\2\u02db\u02dc\5r:\2\u02dc\u02e1\5b\62\2\u02dd\u02de\7\n\2\2\u02de\u02e0" + "\5b\62\2\u02df\u02dd\3\2\2\2\u02e0\u02e3\3\2\2\2\u02e1\u02df\3\2\2\2\u02e1" + "\u02e2\3\2\2\2\u02e2\u02e4\3\2\2\2\u02e3\u02e1\3\2\2\2\u02e4\u02e5\7\26" + "\2\2\u02e5\u030f\3\2\2\2\u02e6\u02e7\5l\67\2\u02e7\u02ec\5b\62\2\u02e8" + "\u02e9\7\n\2\2\u02e9\u02eb\5b\62\2\u02ea\u02e8\3\2\2\2\u02eb\u02ee\3\2" + "\2\2\u02ec\u02ea\3\2\2\2\u02ec\u02ed\3\2\2\2\u02ed\u02ef\3\2\2\2\u02ee" + "\u02ec\3\2\2\2\u02ef\u02f0\b\61\1\2\u02f0\u02f1\7\26\2\2\u02f1\u030f\3" + "\2\2\2\u02f2\u02f3\5r:\2\u02f3\u02f4\5l\67\2\u02f4\u02f9\5b\62\2\u02f5" + "\u02f6\7\n\2\2\u02f6\u02f8\5b\62\2\u02f7\u02f5\3\2\2\2\u02f8\u02fb\3\2" + "\2\2\u02f9\u02f7\3\2\2\2\u02f9\u02fa\3\2\2\2\u02fa\u02fc\3\2\2\2\u02fb" + "\u02f9\3\2\2\2\u02fc\u02fd\b\61\1\2\u02fd\u02fe\7\26\2\2\u02fe\u030f\3" + "\2\2\2\u02ff\u0301\5l\67\2\u0300\u02ff\3\2\2\2\u0300\u0301\3\2\2\2\u0301" + "\u0302\3\2\2\2\u0302\u0303\5r:\2\u0303\u0308\5b\62\2\u0304\u0305\7\n\2" + "\2\u0305\u0307\5b\62\2\u0306\u0304\3\2\2\2\u0307\u030a\3\2\2\2\u0308\u0306" + "\3\2\2\2\u0308\u0309\3\2\2\2\u0309\u030b\3\2\2\2\u030a\u0308\3\2\2\2\u030b" + "\u030c\b\61\1\2\u030c\u030d\7\26\2\2\u030d\u030f\3\2\2\2\u030e\u02d9\3" + "\2\2\2\u030e\u02e6\3\2\2\2\u030e\u02f2\3\2\2\2\u030e\u0300\3\2\2\2\u030f" + "a\3\2\2\2\u0310\u0312\5n8\2\u0311\u0310\3\2\2\2\u0312\u0315\3\2\2\2\u0313" + "\u0311\3\2\2\2\u0313\u0314\3\2\2\2\u0314\u0316\3\2\2\2\u0315\u0313\3\2" + "\2\2\u0316\u0318\5(\25\2\u0317\u0319\5j\66\2\u0318\u0317\3\2\2\2\u0318" + "\u0319\3\2\2\2\u0319\u031c\3\2\2\2\u031a\u031b\7A\2\2\u031b\u031d\5d\63" + "\2\u031c\u031a\3\2\2\2\u031c\u031d\3\2\2\2\u031dc\3\2\2\2\u031e\u0321" + "\5\34\17\2\u031f\u0321\5f\64\2\u0320\u031e\3\2\2\2\u0320\u031f\3\2\2\2" + "\u0321e\3\2\2\2\u0322\u0323\7\5\2\2\u0323\u0324\5h\65\2\u0324\u0325\7" + "\30\2\2\u0325g\3\2\2\2\u0326\u032b\5\34\17\2\u0327\u0328\7\n\2\2\u0328" + "\u032a\5\34\17\2\u0329\u0327\3\2\2\2\u032a\u032d\3\2\2\2\u032b\u0329\3" + "\2\2\2\u032b\u032c\3\2\2\2\u032c\u0330\3\2\2\2\u032d\u032b\3\2\2\2\u032e" + "\u0330\5f\64\2\u032f\u0326\3\2\2\2\u032f\u032e\3\2\2\2\u0330i\3\2\2\2" + "\u0331\u0332\7&\2\2\u0332\u0333\5\34\17\2\u0333\u0334\7\f\2\2\u0334\u0336" + "\3\2\2\2\u0335\u0331\3\2\2\2\u0336\u0337\3\2\2\2\u0337\u0335\3\2\2\2\u0337" + "\u0338\3\2\2\2\u0338k\3\2\2\2\u0339\u033a\t\n\2\2\u033am\3\2\2\2\u033b" + "\u033f\5p9\2\u033c\u033d\7\b\2\2\u033d\u033e\7c\2\2\u033e\u0340\7*\2\2" + "\u033f\u033c\3\2\2\2\u033f\u0340\3\2\2\2\u0340o\3\2\2\2\u0341\u0342\7" + "\r\2\2\u0342\u0343\7b\2\2\u0343q\3\2\2\2\u0344\u0346\7\20\2\2\u0345\u0347" + "\5\26\f\2\u0346\u0345\3\2\2\2\u0346\u0347\3\2\2\2\u0347\u0349\3\2\2\2" + "\u0348\u0344\3\2\2\2\u0348\u0349\3\2\2\2\u0349\u0353\3\2\2\2\u034a\u034c" + "\5t;\2\u034b\u034d\5v<\2\u034c\u034b\3\2\2\2\u034c\u034d\3\2\2\2\u034d" + "\u0354\3\2\2\2\u034e\u0351\7\\\2\2\u034f\u0351\7\24\2\2\u0350\u034e\3" + "\2\2\2\u0350\u034f\3\2\2\2\u0351\u0352\3\2\2\2\u0352\u0354\5\u0082B\2" + "\u0353\u034a\3\2\2\2\u0353\u0350\3\2\2\2\u0354\u0367\3\2\2\2\u0355\u0357" + "\5t;\2\u0356\u0358\5v<\2\u0357\u0356\3\2\2\2\u0357\u0358\3\2\2\2\u0358" + "\u035f\3\2\2\2\u0359\u035c\7\\\2\2\u035a\u035c\7\24\2\2\u035b\u0359\3" + "\2\2\2\u035b\u035a\3\2\2\2\u035c\u035d\3\2\2\2\u035d\u035f\5\u0082B\2" + "\u035e\u0355\3\2\2\2\u035e\u035b\3\2\2\2\u035f\u0360\3\2\2\2\u0360\u0362" + "\7\20\2\2\u0361\u0363\5\26\f\2\u0362\u0361\3\2\2\2\u0362\u0363\3\2\2\2" + "\u0363\u0364\3\2\2\2\u0364\u0365\b:\1\2\u0365\u0367\3\2\2\2\u0366\u0348" + "\3\2\2\2\u0366\u035e\3\2\2\2\u0367s\3\2\2\2\u0368\u0369\t\13\2\2\u0369" + "u\3\2\2\2\u036a\u036b\7=\2\2\u036b\u036c\5\34\17\2\u036c\u036d\7?\2\2" + "\u036dw\3\2\2\2\u036e\u036f\7]\2\2\u036f\u0372\5z>\2\u0370\u0371\7\27" + "\2\2\u0371\u0373\5|?\2\u0372\u0370\3\2\2\2\u0372\u0373\3\2\2\2\u0373\u0374" + "\3\2\2\2\u0374\u0375\5~@\2\u0375y\3\2\2\2\u0376\u0377\5\u0082B\2\u0377" + "{\3\2\2\2\u0378\u037d\5\u0082B\2\u0379\u037a\7\n\2\2\u037a\u037c\5\u0082" + "B\2\u037b\u0379\3\2\2\2\u037c\u037f\3\2\2\2\u037d\u037b\3\2\2\2\u037d" + "\u037e\3\2\2\2\u037e}\3\2\2\2\u037f\u037d\3\2\2\2\u0380\u0384\7\5\2\2" + "\u0381\u0383\5\u0080A\2\u0382\u0381\3\2\2\2\u0383\u0386\3\2\2\2\u0384" + "\u0382\3\2\2\2\u0384\u0385\3\2\2\2\u0385\u0387\3\2\2\2\u0386\u0384\3\2" + "\2\2\u0387\u0388\7\30\2\2\u0388\177\3\2\2\2\u0389\u038b\5n8\2\u038a\u0389" + "\3\2\2\2\u038b\u038e\3\2\2\2\u038c\u038a\3\2\2\2\u038c\u038d\3\2\2\2\u038d" + "\u038f\3\2\2\2\u038e\u038c\3\2\2\2\u038f\u0390\5`\61\2\u0390\u0081\3\2" + "\2\2\u0391\u0396\7b\2\2\u0392\u0393\7\36\2\2\u0393\u0395\7b\2\2\u0394" + "\u0392\3\2\2\2\u0395\u0398\3\2\2\2\u0396\u0394\3\2\2\2\u0396\u0397\3\2" + "\2\2\u0397\u0083\3\2\2\2\u0398\u0396\3\2\2\2y\u0088\u008c\u008e\u0094" + "\u009a\u00a0\u00a6\u00ae\u00b3\u00b9\u00bf\u00c4\u00cc\u00d7\u00db\u00e0" + "\u00e6\u00ea\u00f1\u00f9\u00fe\u0103\u0106\u010d\u0110\u0114\u0117\u011f" + "\u0122\u0127\u012f\u0132\u0136\u013e\u0141\u014c\u0155\u015e\u0187\u0189" + "\u018f\u0197\u01a3\u01aa\u01af\u01b3\u01b6\u01b9\u01c0\u01c5\u01d4\u01dc" + "\u01e2\u01e7\u01f1\u01fa\u01fd\u0206\u020a\u020d\u020f\u0215\u0224\u0228" + "\u022c\u023f\u0242\u0246\u0249\u0253\u0256\u025e\u0266\u026a\u0271\u027a" + "\u0281\u0285\u028b\u0290\u02a2\u02aa\u02b0\u02b6\u02bb\u02c0\u02c4\u02c9" + "\u02d1\u02d9\u02e1\u02ec\u02f9\u0300\u0308\u030e\u0313\u0318\u031c\u0320" + "\u032b\u032f\u0337\u033f\u0346\u0348\u034c\u0350\u0353\u0357\u035b\u035e" + "\u0362\u0366\u0372\u037d\u0384\u038c\u0396"; public static final ATN _ATN = new ATNDeserializer().deserialize(_serializedATN.toCharArray()); static { _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()]; for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) { _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i); } } }